{"version":3,"file":"default/js/main.js","mappings":"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B;AACA,oBAAoB;AACpB,qBAAqB;AACrB;AACA;AACA;AACA,kJAAiE;AACjE,yBAAyB;AACzB;AACA;AACA,oBAAoB;AACpB;AACA,mCAAmC;AACnC,kCAAkC;AAClC,iCAAiC;AACjC,mBAAmB;;;;;;;;;;;AC3HP;AACZ;AACA,eAAe,mBAAO,CAAC,gFAAsB;AAC7C,WAAW,mBAAO,CAAC,0EAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,iCAAiC;AACjC;AACA;AACA;AACA,kCAAkC;AAClC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,oCAAoC,sDAAsD;AAC1F,gDAAgD;AAChD;AACA,iBAAiB;AACjB;AACA;AACA,2BAA2B,6CAA6C;AACxE,uCAAuC;AACvC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,kCAAkC;AAClC,iCAAiC;AACjC,mBAAmB;AACnB,yBAAyB;AACzB;AACA,oBAAoB;AACpB,qBAAqB;;;;;;;;;;;AC1GT;AACZ;AACA,eAAe,mBAAO,CAAC,gFAAsB;AAC7C,WAAW,mBAAO,CAAC,0EAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;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","sources":["webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/cart/cart.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/backTopBtn.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/carousel.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/checkbox.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/countrySelector.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/header.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/initInput.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/inputDate.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/inputPassword.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/keyboardAccessibility.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/miniCart.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/spinner.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/swiper.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/components/toastr.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/thirdParty/bootstrap.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/components/collapsibleItem.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/components/footer.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/components/scrollAnimate.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/components/search.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/components/toolTip.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/product/base.js","webpack://sfcc_hostletter_yamaha/./cartridges/app_storefront_base/cartridge/client/default/js/util.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/alert.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/carousel.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/collapse.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/dropdown.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/modal.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/scrollspy.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/tab.js","webpack://sfcc_hostletter_yamaha/./node_modules/bootstrap/js/src/util.js","webpack://sfcc_hostletter_yamaha/./node_modules/jquery/dist/jquery.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_Symbol.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_baseGetTag.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_baseTrim.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_freeGlobal.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_getRawTag.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_objectToString.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_root.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/_trimmedEndIndex.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/debounce.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/isObject.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/isObjectLike.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/isSymbol.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/now.js","webpack://sfcc_hostletter_yamaha/./node_modules/lodash/toNumber.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isBrowser.js","webpack://sfcc_hostletter_yamaha/../../src/utils/debounce.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isFunction.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getStyleComputedProperty.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getParentNode.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getScrollParent.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getReferenceNode.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isIE.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getOffsetParent.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isOffsetContainer.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getRoot.js","webpack://sfcc_hostletter_yamaha/../../src/utils/findCommonOffsetParent.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getScroll.js","webpack://sfcc_hostletter_yamaha/../../src/utils/includeScroll.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getBordersSize.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getWindowSizes.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getClientRect.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getBoundingClientRect.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isFixed.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getFixedPositionOffsetParent.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getBoundaries.js","webpack://sfcc_hostletter_yamaha/../../src/utils/computeAutoPlacement.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getReferenceOffsets.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getOuterSizes.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getOppositePlacement.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getPopperOffsets.js","webpack://sfcc_hostletter_yamaha/../../src/utils/find.js","webpack://sfcc_hostletter_yamaha/../../src/utils/findIndex.js","webpack://sfcc_hostletter_yamaha/../../src/utils/runModifiers.js","webpack://sfcc_hostletter_yamaha/../../src/methods/update.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isModifierEnabled.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getSupportedPropertyName.js","webpack://sfcc_hostletter_yamaha/../../src/methods/destroy.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getWindow.js","webpack://sfcc_hostletter_yamaha/../../src/utils/setupEventListeners.js","webpack://sfcc_hostletter_yamaha/../../src/methods/enableEventListeners.js","webpack://sfcc_hostletter_yamaha/../../src/utils/removeEventListeners.js","webpack://sfcc_hostletter_yamaha/../../src/methods/disableEventListeners.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isNumeric.js","webpack://sfcc_hostletter_yamaha/../../src/utils/setStyles.js","webpack://sfcc_hostletter_yamaha/../../src/utils/setAttributes.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/applyStyle.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getRoundedOffsets.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/computeStyle.js","webpack://sfcc_hostletter_yamaha/../../src/utils/isModifierRequired.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/arrow.js","webpack://sfcc_hostletter_yamaha/../../src/utils/getOppositeVariation.js","webpack://sfcc_hostletter_yamaha/../../src/methods/placements.js","webpack://sfcc_hostletter_yamaha/../../src/utils/clockwise.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/flip.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/keepTogether.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/offset.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/preventOverflow.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/shift.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/hide.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/inner.js","webpack://sfcc_hostletter_yamaha/../../src/modifiers/index.js","webpack://sfcc_hostletter_yamaha/../../src/methods/defaults.js","webpack://sfcc_hostletter_yamaha/../../src/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/select2/dist/js/select2.js","webpack://sfcc_hostletter_yamaha/./node_modules/slick-carousel/slick/slick.js","webpack://sfcc_hostletter_yamaha/./node_modules/toastr/toastr.js","webpack://sfcc_hostletter_yamaha/./node_modules/libphonenumber-js/core/index.cjs","webpack://sfcc_hostletter_yamaha/./node_modules/libphonenumber-js/index.cjs","webpack://sfcc_hostletter_yamaha/./node_modules/libphonenumber-js/max/index.cjs","webpack://sfcc_hostletter_yamaha/./node_modules/libphonenumber-js/min/index.cjs","webpack://sfcc_hostletter_yamaha/../source/AsYouType.js","webpack://sfcc_hostletter_yamaha/../source/AsYouTypeFormatter.PatternMatcher.js","webpack://sfcc_hostletter_yamaha/../source/AsYouTypeFormatter.PatternParser.js","webpack://sfcc_hostletter_yamaha/../source/AsYouTypeFormatter.complete.js","webpack://sfcc_hostletter_yamaha/../source/AsYouTypeFormatter.js","webpack://sfcc_hostletter_yamaha/../source/AsYouTypeFormatter.util.js","webpack://sfcc_hostletter_yamaha/../source/AsYouTypeParser.js","webpack://sfcc_hostletter_yamaha/../source/AsYouTypeState.js","webpack://sfcc_hostletter_yamaha/../source/ParseError.js","webpack://sfcc_hostletter_yamaha/../source/PhoneNumber.js","webpack://sfcc_hostletter_yamaha/../source/PhoneNumberMatcher.js","webpack://sfcc_hostletter_yamaha/../source/constants.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/LRUCache.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/Leniency.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/RegExpCache.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/isValidCandidate.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/isValidPreCandidate.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/matchPhoneNumberStringAgainstPhoneNumber.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/parsePreCandidate.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/utf-8.js","webpack://sfcc_hostletter_yamaha/../../source/findNumbers/util.js","webpack://sfcc_hostletter_yamaha/../source/findPhoneNumbersInText.js","webpack://sfcc_hostletter_yamaha/../source/format.js","webpack://sfcc_hostletter_yamaha/../source/formatIncompletePhoneNumber.js","webpack://sfcc_hostletter_yamaha/../source/getCountries.js","webpack://sfcc_hostletter_yamaha/../source/getCountryCallingCode.js","webpack://sfcc_hostletter_yamaha/../source/getExampleNumber.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/RFC3966.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/applyInternationalSeparatorStyle.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/checkNumberLength.js","webpack://sfcc_hostletter_yamaha/../../../source/helpers/extension/createExtensionPattern.js","webpack://sfcc_hostletter_yamaha/../../../source/helpers/extension/extractExtension.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/extractCountryCallingCode.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/extractNationalNumber.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/extractPhoneContext.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/formatNationalNumberUsingFormat.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/getCountryByCallingCode.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/getCountryByNationalNumber.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/getIddPrefix.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/getNumberType.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/getPossibleCountriesForNumber.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/isViablePhoneNumber.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/matchesEntirely.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/mergeArrays.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/parseDigits.js","webpack://sfcc_hostletter_yamaha/../../source/helpers/stripIddPrefix.js","webpack://sfcc_hostletter_yamaha/../source/isPossible.js","webpack://sfcc_hostletter_yamaha/../source/isPossiblePhoneNumber.js","webpack://sfcc_hostletter_yamaha/../source/isValid.js","webpack://sfcc_hostletter_yamaha/../source/isValidPhoneNumber.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/findNumbers.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/findPhoneNumbers.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/findPhoneNumbersInitialImplementation.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/format.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/getNumberType.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/isPossibleNumber.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/isValidNumber.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/isValidNumberForRegion.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/isValidNumberForRegion_.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/parse.js","webpack://sfcc_hostletter_yamaha/../../source/legacy/searchNumbers.js","webpack://sfcc_hostletter_yamaha/../source/metadata.js","webpack://sfcc_hostletter_yamaha/../source/normalizeArguments.js","webpack://sfcc_hostletter_yamaha/../source/parse.js","webpack://sfcc_hostletter_yamaha/../source/parseIncompletePhoneNumber.js","webpack://sfcc_hostletter_yamaha/../source/parsePhoneNumber.js","webpack://sfcc_hostletter_yamaha/../source/parsePhoneNumberWithError.js","webpack://sfcc_hostletter_yamaha/../source/parsePhoneNumberWithError_.js","webpack://sfcc_hostletter_yamaha/../source/parsePhoneNumber_.js","webpack://sfcc_hostletter_yamaha/../source/searchPhoneNumbersInText.js","webpack://sfcc_hostletter_yamaha/../../source/tools/semver-compare.js","webpack://sfcc_hostletter_yamaha/../source/validatePhoneNumberLength.js","webpack://sfcc_hostletter_yamaha/./node_modules/ssr-window/ssr-window.esm.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/components-shared/params-list.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/components-shared/update-swiper.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/components-shared/utils.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/breakpoints/getBreakpoint.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/breakpoints/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/breakpoints/setBreakpoint.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/check-overflow/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/classes/addClasses.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/classes/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/classes/removeClasses.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/core.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/defaults.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events-emitter.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/onClick.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/onLoad.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/onResize.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/onScroll.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/onTouchEnd.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/onTouchMove.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/events/onTouchStart.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/grab-cursor/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/grab-cursor/setGrabCursor.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/loop/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/loop/loopCreate.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/loop/loopDestroy.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/loop/loopFix.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/moduleExtendParams.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/modules/observer/observer.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/modules/resize/resize.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/slideNext.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/slidePrev.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/slideReset.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/slideTo.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/slideToClickedSlide.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/slideToClosest.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/slide/slideToLoop.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/transition/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/transition/setTransition.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/transition/transitionEmit.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/transition/transitionEnd.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/transition/transitionStart.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/translate/getTranslate.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/translate/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/translate/maxTranslate.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/translate/minTranslate.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/translate/setTranslate.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/translate/translateTo.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/index.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateActiveIndex.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateAutoHeight.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateClickedSlide.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateProgress.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateSize.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateSlides.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateSlidesClasses.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateSlidesOffset.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/core/update/updateSlidesProgress.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/element/get-params.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/element/swiper-element-bundle.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/a11y/a11y.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/autoplay/autoplay.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/controller/controller.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/effect-cards/effect-cards.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/effect-coverflow/effect-coverflow.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/effect-creative/effect-creative.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/effect-cube/effect-cube.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/effect-fade/effect-fade.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/effect-flip/effect-flip.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/free-mode/free-mode.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/grid/grid.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/hash-navigation/hash-navigation.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/history/history.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/keyboard/keyboard.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/manipulation/manipulation.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/manipulation/methods/addSlide.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/manipulation/methods/appendSlide.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/manipulation/methods/prependSlide.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/manipulation/methods/removeAllSlides.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/manipulation/methods/removeSlide.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/mousewheel/mousewheel.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/navigation/navigation.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/pagination/pagination.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/parallax/parallax.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/scrollbar/scrollbar.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/thumbs/thumbs.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/virtual/virtual.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/modules/zoom/zoom.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/classes-to-selector.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/create-element-if-not-defined.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/create-shadow.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/effect-init.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/effect-target.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/effect-virtual-transition-end.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/get-browser.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/get-device.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/get-support.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/process-lazy-preloader.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/shared/utils.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/swiper-bundle.esm.js","webpack://sfcc_hostletter_yamaha/./node_modules/swiper/swiper.esm.js","webpack://sfcc_hostletter_yamaha/webpack/bootstrap","webpack://sfcc_hostletter_yamaha/webpack/runtime/amd define","webpack://sfcc_hostletter_yamaha/webpack/runtime/compat get default export","webpack://sfcc_hostletter_yamaha/webpack/runtime/define property getters","webpack://sfcc_hostletter_yamaha/webpack/runtime/global","webpack://sfcc_hostletter_yamaha/webpack/runtime/hasOwnProperty shorthand","webpack://sfcc_hostletter_yamaha/webpack/runtime/make namespace object","webpack://sfcc_hostletter_yamaha/webpack/runtime/node module decorator","webpack://sfcc_hostletter_yamaha/./cartridges/app_custom_yamaha/cartridge/client/default/js/main.js"],"sourcesContent":["'use strict';\n\nvar base = require('base/product/base');\nvar focusHelper = require('base/components/focus');\nvar debounce = require('lodash/debounce');\nvar debounceQuantity = debounce(updateQuantity, 200);\nvar debounceUndo = debounce(ajaxDeleteUndo, 500);\n\nfunction updateQuantity(scope) {\n var $parent = $(scope).parent();\n var preSelectQty;\n if($(scope).hasClass('quantity-mobile')){\n preSelectQty = $(scope).val();\n } else {\n preSelectQty = $(scope).data('pre-select-qty');\n }\n var quantity = parseInt(preSelectQty);\n var productID = $(scope).data('pid');\n var url = $(scope).data('action');\n var uuid = $(scope).data('uuid');\n\n var urlParams = {\n pid: productID,\n quantity: quantity,\n uuid: uuid\n };\n url = appendToUrl(url, urlParams);\n\n $(scope).parents('.card').spinner().start();\n\n $('body').trigger('cart:beforeUpdate');\n\n $.ajax({\n url: url,\n type: 'get',\n context: scope,\n dataType: 'json',\n success: function (data) {\n for (var i = 0; i < data.items.length; i++) {\n var lineItem = data.items[i];\n if (lineItem && lineItem.UUID == uuid) {\n var min = lineItem.quantityOptions.minOrderQuantity;\n var max = lineItem.quantityOptions.maxOrderQuantity;\n var newQuantity = lineItem.quantity;\n var cardItem = $(this).closest('.card.product-info');\n //$(\"#\" +lineItem.UUID).remove();\n\n if (lineItem.quantity > min) {\n $parent.find('.quantity-selector__btn.decrease').data('pre-select-qty', parseInt(lineItem.quantity, 10) - 1);\n $parent.find('.quantity-selector__btn.decrease').removeClass('disabled');\n $parent.find('.quantity-selector__btn.increase').prop('disabled', false);\n } else {\n $parent.find('.quantity-selector__btn.decrease').addClass('disabled');\n }\n if (lineItem.quantity < max) {\n $parent.find('.quantity-selector__btn.increase').data('pre-select-qty', parseInt(lineItem.quantity, 10) + 1);\n $parent.find('.quantity-selector__btn.increase').removeClass('disabled');\n $parent.find('.quantity-selector__btn.increase').prop('disabled', false);\n } else {\n $parent.find('.quantity-selector__btn.increase').addClass('disabled');\n }\n if((lineItem.availability.notAvailable || !lineItem.isOrderable) && cardItem) {\n cardItem.addClass('error-highlighting');\n } else {\n cardItem.removeClass('error-highlighting');\n cardItem.find('.product-card-footer .custom-isml-message').html('');\n }\n\n var selectMobileOptions = $parent.find('select.quantity-mobile option');\n if (selectMobileOptions) {\n for (var j = 0; j < selectMobileOptions.length; j++) {\n if(selectMobileOptions[j] && selectMobileOptions[j].dataset['value'] > max ) {\n selectMobileOptions[j].disabled = true\n }\n }\n }\n }\n }\n $('.coupons-and-promos').empty().append(data.totals.discountsHtml);\n //$('.quantity[data-uuid=\"' + uuid + '\"]').val(parseInt(newQuantityMobile));\n $parent.find('.quantity-selector__number').html(parseInt(newQuantity, 10));\n $parent.parents('div.product-info').find('button.remove-product').data('qty', newQuantity);\n\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n updateAvailability(data, uuid);\n validateBasket(data);\n\n $('body').trigger('cart:update', data);\n\n $.spinner().stop();\n if ($(scope).parents('.product-info').hasClass('bonus-product-line-item') && $('.cart-page').length) {\n location.reload();\n }\n $(scope).closest('div.line-item-quantity').siblings('div.delete-button').find('button.remove-product').data('qty', newQuantity);\n\n // remove bundle item if all quantity isn't available \n if((data.removedProducts && data.removedProducts.length) || data.updatedQuantity){\n data.removedProducts.forEach(removedProduct => {\n $(`.uuid-${removedProduct.UUID}`).remove();\n });\n // mark as red product unavailable\n data.unavailableProducts.forEach(product => {\n $(`.uuid-${product.UUID}`).addClass('error-highlighting');\n })\n toastr.error(data.updateQuantityMessage);\n }\n\n // remove bundle item if OOS\n if(data.listBundleOutOfStock){\n // mark as red product unavailable\n data.listBundleOutOfStock.forEach(product => {\n $(`.uuid-${product.UUID}`).addClass('error-highlighting');\n })\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n var unavailableMessage = $(this).data('messageItemUnavailable') || \"Item Unavailable\";\n var unavailableMessageDescription = $(this).data('itemUnavailableDescription') || \"This item is currently not available\";\n var mobileSelect = $(this).hasClass('quantity-mobile');\n var desktopButton = $(this).hasClass('quantity-selector__btn');\n if(mobileSelect) {\n $(this).prop('disabled', 'disabled');\n }\n if(desktopButton) {\n $(this).prop('disabled', 'disabled');\n $(this).addClass('disabled');\n }\n createErrorNotification(err.responseJSON.errorMessage);\n $(scope).val(parseInt(preSelectQty, 10));\n $.spinner().stop();\n $(this).closest('.card.product-info .product-card-footer').find('.custom-isml-message').remove();\n $(this).closest('.card.product-info').addClass('error-highlighting');\n $(this).closest('.card.product-info .product-card-footer').append(`\n <div class=\"custom-isml-message mt-6 d-flex align-items-center line-item-error-cart mr-10 mb-5 mb-md-0 flex-wrap flex-md-nowrap\">\n <div class=\"product-error mr-6\">${unavailableMessage}</div>\n <div class=\"product-error-message\">${unavailableMessageDescription}</div>\n </div>\n `);\n }\n }\n });\n}\n\n/**\n * appends params to a url\n * @param {string} url - Original url\n * @param {Object} params - Parameters to append\n * @returns {string} result url with appended parameters\n */\nfunction appendToUrl(url, params) {\n var newUrl = url;\n newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {\n return key + '=' + encodeURIComponent(params[key]);\n }).join('&');\n\n return newUrl;\n}\n\n/**\n * Checks whether the basket is valid. if invalid displays error message and disables\n * checkout button\n * @param {Object} data - AJAX response from the server\n */\nfunction validateBasket(data) {\n if (data.valid.errorInfo && data.valid.message) {\n toastr.error(data.valid.message);\n }\n if (data.valid.error) {\n if (data.valid.message) {\n toastr.error(data.valid.message);\n // var errorHtml = '<div class=\"alert alert-danger alert-dismissible valid-cart-error ' +\n // 'fade show\" role=\"alert\">' +\n // '<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">' +\n // '<span aria-hidden=\"true\">×</span>' +\n // '</button>' + data.valid.message + '</div>';\n\n // $('.cart-error').append(errorHtml);\n } else {\n $('.cart').empty().append('<div class=\"row\"> ' +\n '<div class=\"col-12 text-center\"> ' +\n '<h1>' + data.resources.emptyCartMsg + '</h1> ' +\n '</div> ' +\n '</div>'\n );\n $('.number-of-items').empty().append(data.resources.numberOfItems);\n $('.minicart-quantity').empty().append(data.numItems);\n $('.minicart-link').attr({\n 'aria-label': data.resources.minicartCountOfItems,\n title: data.resources.minicartCountOfItems\n });\n $('.minicart .popover').empty();\n $('.minicart .popover').removeClass('show');\n }\n\n $('.checkout-btn').addClass('disabled');\n } else {\n $('.checkout-btn').removeClass('disabled');\n }\n}\n\n/**\n * re-renders the order totals and the number of items in the cart\n * @param {Object} data - AJAX response from the server\n */\nfunction updateCartTotals(data) {\n $('.js-total-item').empty().append(data.numItems > 1 ? data.resources.numberOfItems : data.resources.numberOfItem );\n $('.shipping-cost .shipping-cost-value').empty().append(data.totals.totalShippingCost);\n $('.tax-total').empty().append(data.totals.totalTax);\n $('.grand-total').empty().append(data.totals.grandTotal);\n $('.merchandize-total-price del').empty().append(data.totals.saveTotal != '' ? data.totals.merchandizeTotalPrice : '');\n $('.save-total').empty().append(data.totals.saveTotal);\n $('.sub-total').empty().append(data.totals.subTotal);\n $('.minicart-quantity').empty().append(data.numItems);\n $('.minicart .minicart-quantity').attr('data-quantity', data.numItems);\n $('.minicart-link').attr({\n 'aria-label': data.resources.minicartCountOfItems,\n title: data.resources.minicartCountOfItems\n });\n if (data.totals.orderLevelDiscountTotal.value > 0) {\n $('.order-discount').removeClass('hide-order-discount');\n $('.order-discount-total').empty()\n .append(data.totals.orderLevelDiscountTotal.formatted);\n } else {\n $('.order-discount').addClass('hide-order-discount');\n }\n\n if (data.totals.shippingLevelDiscountTotal.value > 0) {\n $('.shipping-discount').removeClass('hide-shipping-discount');\n $('.shipping-discount-total').empty().append('- ' +\n data.totals.shippingLevelDiscountTotal.formatted);\n } else {\n $('.shipping-discount').addClass('hide-shipping-discount');\n }\n\n data.items.forEach(function (item) {\n if (data.totals.orderLevelDiscountTotal.value > 0) {\n $('.coupons-and-promos').empty().append(data.totals.discountsHtml);\n }\n $('.uuid-' + item.UUID + ' .unit-price').empty().append(item.renderedPrice);\n $('.line-item-price-' + item.UUID + ' .unit-price').empty().append(item.renderedPrice);\n $('.item-total-' + item.UUID).empty().append(item.priceTotal.renderedPrice);\n if (item.renderedPromotions) {\n $('.item-' + item.UUID).empty().append(item.renderedPromotions);\n } else {\n $('.item-' + item.UUID).empty();\n }\n });\n}\n\n/**\n * re-renders the order totals and the number of items in the cart\n * @param {Object} message - Error message to display\n */\nfunction createErrorNotification(message) {\n toastr.error(message);\n // var errorHtml = '<div class=\"alert alert-danger alert-dismissible valid-cart-error ' +\n // 'fade show\" role=\"alert\">' +\n // '<button type=\"button\" class=\"close\" data-dismiss=\"alert\" aria-label=\"Close\">' +\n // '<span aria-hidden=\"true\">×</span>' +\n // '</button>' + message + '</div>';\n\n // $('.cart-error').append(errorHtml);\n}\n\n/**\n * re-renders the approaching discount messages\n * @param {Object} approachingDiscounts - updated approaching discounts for the cart\n */\nfunction updateApproachingDiscounts(approachingDiscounts) {\n var html = '';\n var benefitHtml = '';\n $('.approaching-discounts').empty();\n if (approachingDiscounts.length > 0) {\n if ($('.benefit-bar-approaching-discounts').is(':empty')) {\n $('.benefit-bar-approaching-discounts').slideUp().empty();\n }\n approachingDiscounts.forEach(function (item) {\n html += '<div class=\"single-approaching-discount text-center text-dark\">' +\n '<div class=\"progress\">' +\n `<progress class=\"progress-bar bg-dark\" role=\"progressbar\" max=\"100\" value=\"${item.merchandisePercentOf.toFixed(0)}\"></progress>`\n +'</div>' + item.discountMsg + '</div>';\n if (item.benefitBarMsg) {\n benefitHtml = item.benefitBarMsg;\n }\n });\n } else {\n $('.benefit-bar-approaching-discounts').slideUp().empty();\n }\n $('.approaching-discounts').append(html);\n if ($('.benefit-bar-approaching-discounts').is(':empty')) {\n $('.benefit-bar-approaching-discounts').append(benefitHtml).slideDown();\n }\n initProgressBar();\n}\n\n/**\n * Updates the availability of a product line item\n * @param {Object} data - AJAX response from the server\n * @param {string} uuid - The uuid of the product line item to update\n */\nfunction updateAvailability(data, uuid) {\n var lineItem;\n var messages = '';\n var lowStockIcons = $('.product-card-footer [name=lowStockIcons-'+uuid+']').val();\n\n for (var i = 0; i < data.items.length; i++) {\n if (data.items[i].UUID === uuid) {\n lineItem = data.items[i];\n break;\n }\n }\n\n if (lineItem != null) {\n $('#' + lineItem.UUID).empty();\n /* if (lineItem.availability) {\n if (lineItem.availability.messages) {\n lineItem.availability.messages.forEach(function (message) {\n messages += '<p class=\"line-item-attributes\">' + message + '</p>';\n });\n }\n if (lineItem.availability.inStockDate) {\n messages += '<p class=\"line-item-attributes line-item-instock-date\">'\n + lineItem.availability.inStockDate\n + '</p>';\n }\n } */\n if(lineItem.leadTime != \"\" && lineItem.leadTime != null) {\n messages += `\n <div class=\"d-flex align-items-center mr-10 mb-5 mb-md-0\">\n <i class=\"material-icons mr-4\">local_shipping</i>\n <span>${lineItem.leadTime}</span>\n </div>\n `;\n }\n if(lineItem.availability.showlowStockMessage) {\n messages += `\n <div class=\"d-flex align-items-center mr-10 mb-5 mb-md-0\">\n <img class=\"mr-4\" width=\"24\" height=\"24\" src=\"${lowStockIcons}\" alt=\"\" />\n <span>${lineItem.availability.showlowStockMessage}</span>\n </div>\n `;\n }\n $('#' + lineItem.UUID).html(messages);\n } \n\n if(data.valid.error == false) {\n $('.card.product-info.uuid-' + lineItem.UUID).removeClass('error-highlighting')\n }\n}\n\n/**\n * Finds an element in the array that matches search parameter\n * @param {array} array - array of items to search\n * @param {function} match - function that takes an element and returns a boolean indicating if the match is made\n * @returns {Object|null} - returns an element of the array that matched the query.\n */\nfunction findItem(array, match) { // eslint-disable-line no-unused-vars\n for (var i = 0, l = array.length; i < l; i++) {\n if (match.call(this, array[i])) {\n return array[i];\n }\n }\n return null;\n}\n\n/**\n * Updates details of a product line item\n * @param {Object} data - AJAX response from the server\n * @param {string} uuid - The uuid of the product line item to update\n */\nfunction updateProductDetails(data, uuid) {\n $('.card.product-info.uuid-' + uuid).replaceWith(data.renderedTemplate);\n}\n\n/**\n * Generates the modal window on the first call.\n *\n */\nfunction getModalHtmlElement() {\n if ($('#editProductModal').length !== 0) {\n $('#editProductModal').remove();\n }\n var htmlString = '<!-- Modal -->'\n + '<div class=\"modal fade\" id=\"editProductModal\" tabindex=\"-1\" role=\"dialog\">'\n + '<span class=\"enter-message sr-only\" ></span>'\n + '<div class=\"modal-dialog quick-view-dialog\">'\n + '<!-- Modal content-->'\n + '<div class=\"modal-content\">'\n + '<div class=\"modal-header\">'\n + ' <button type=\"button\" class=\"close pull-right\" data-dismiss=\"modal\">'\n + ' <span aria-hidden=\"true\">×</span>'\n + ' <span class=\"sr-only\"> </span>'\n + ' </button>'\n + '</div>'\n + '<div class=\"modal-body\"></div>'\n + '<div class=\"modal-footer\"></div>'\n + '</div>'\n + '</div>'\n + '</div>';\n $('body').append(htmlString);\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('<div>').append($.parseHTML(html));\n\n var body = $html.find('.product-quickview');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * replaces the content in the modal window for product variation to be edited.\n * @param {string} editProductUrl - url to be used to retrieve a new product model\n */\nfunction fillModalElement(editProductUrl) {\n $('.modal-body').spinner().start();\n $.ajax({\n url: editProductUrl,\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n var parsedHtml = parseHtml(data.renderedTemplate);\n\n $('#editProductModal .modal-body').empty();\n $('#editProductModal .modal-body').html(parsedHtml.body);\n $('#editProductModal .modal-footer').html(parsedHtml.footer);\n $('#editProductModal .modal-header .close .sr-only').text(data.closeButtonText);\n $('#editProductModal .enter-message').text(data.enterDialogMessage);\n $('#editProductModal').modal('show');\n $('body').trigger('editproductmodal:ready');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * replace content of modal\n * @param {string} actionUrl - url to be used to remove product\n * @param {string} productID - pid\n * @param {string} productName - product name\n * @param {string} uuid - uuid\n */\nfunction confirmDelete(actionUrl, productID, productName, uuid) {\n var $deleteConfirmBtn = $('.cart-delete-confirmation-btn');\n var $productToRemoveSpan = $('.product-to-remove');\n\n $deleteConfirmBtn.data('pid', productID);\n $deleteConfirmBtn.data('action', actionUrl);\n $deleteConfirmBtn.data('uuid', uuid);\n\n //$productToRemoveSpan.empty().append(productName);\n}\n\nfunction initProgressBar() {\n var $progressBar = $('.progress .progress-bar');\n if ($progressBar.length && $progressBar.data('percent')) {\n $progressBar.animate({width: $progressBar.data('percent')});\n }\n}\n\nfunction ajaxDeleteUndo(scope) {\n var $this = $(scope);\n var productID = $this.data('pid');\n var url = $this.data('action');\n var qty = $this.data('qty');\n var urlParams = {\n pid: productID,\n quantity: qty\n };\n\n $('body > .modal-backdrop').remove();\n\n $.spinner().start();\n\n $('body').trigger('cart:beforeUpdate');\n\n $.ajax({\n url: url,\n type: 'post',\n data: urlParams,\n dataType: 'json',\n success: function (data) {\n if (data.cart.items.length === 0) {\n $('.cart').empty().append('<div class=\"row\"> ' +\n '<div class=\"col-12 text-center\"> ' +\n '<h1>' + data.cart.resources.emptyCartMsg + '</h1> ' +\n '</div> ' +\n '</div>'\n );\n $('.number-of-items').empty().append(data.cart.resources.numberOfItems);\n $('.minicart-quantity').empty().append(data.cart.numItems);\n $('.minicart-link').attr({\n 'aria-label': data.cart.resources.minicartCountOfItems,\n title: data.cart.resources.minicartCountOfItems\n });\n $('.minicart .popover').empty();\n $('.minicart .popover').removeClass('show');\n $('body').removeClass('modal-open');\n $('html').removeClass('veiled');\n } else {\n location.reload();\n }\n $('body').trigger('cart:update', data);\n\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n}\n\n\n/**\n * replace content of alert\n * @param {string} pid - product id\n * @param {string} pname - product name\n * @param {number} deletedQuantity - deletedQuantity\n */\nfunction showAlertUndo(pid, pname, deletedQuantity) {\n $('button.cart-delete-undo-btn').data('qty', deletedQuantity);\n\n var actionUrl = $('.data_product_undo').data('actionUrl');\n var labelUndo = $('.data_product_undo').data('labelUndo');\n var labelItemsRemoved = $('.data_product_undo').data('labelItemremoved');\n\n const toastAlertUndo = `\n <div id=\"${pid}\" class=\"d-flex justify-content-start align-items-center mx-auto\">\n <div class=\"mr-6 d-flex align-items-center flex-fill\">\n <div class=\"product-to-remove\">${labelItemsRemoved}</div>\n </div>\n <button\n type=\"button\"\n class=\"cart-delete-undo-btn cta-link\"\n data-action=\"${actionUrl}\"\n data-pid=\"${pid}\"\n data-qty=\"${deletedQuantity}\">\n ${labelUndo}\n </button>\n </div>`;\n\n if(toastAlertUndo) {\n toastr.success(toastAlertUndo);\n }\n\n $(document).on(\"click\", \".cart-delete-undo-btn\", function() {\n debounceUndo(this);\n });\n\n}\n\nmodule.exports = function () {\n\n $(document).ready(function () {\n var $element = $('.fixed-total-order');\n var $elementPosition = $('.cart-totals .checkout-continue .checkout-btn').length && $('.cart-totals .checkout-continue .checkout-btn').offset().top;\n $(window).scroll(function () {\n var $scrollViewport = $(window).scrollTop() + $(window).innerHeight();\n if($scrollViewport >= $elementPosition + $element.height() ) {\n $element.removeClass('fixed');\n } else {\n $element.addClass('fixed');\n }\n })\n\n if($('.page').data('action') == 'Cart-Show'){\n var path = window.location.pathname;\n var page = path.split('/').pop();\n //remove querystring\n // page = page.split('?')[0];\n\n history.replaceState(null, null, page);\n }\n });\n\n $('body').on('click', '.remove-product', function (e) {\n e.preventDefault();\n\n var actionUrl = $(this).data('action');\n var productID = $(this).data('pid');\n var productName = $(this).data('name');\n var uuid = $(this).data('uuid');\n var unavailable = $(this).data('unavailable');\n if (!unavailable) {\n confirmDelete(actionUrl, productID, productName, uuid);\n }\n });\n\n $('body').on('afterRemoveFromCart', function (e, data) {\n e.preventDefault();\n //toastr.clear();\n showAlertUndo(data.productID, data.productName, data.deletedQuantity);\n });\n\n /* $('.optional-promo').click(function (e) {\n e.preventDefault();\n $('.promo-code-form').toggle();\n }); */\n\n $('body').on('click', 'button.remove-product', function (e) {\n e.preventDefault();\n\n var productID = $(this).data('pid');\n var url = $(this).data('action');\n var uuid = $(this).data('uuid');\n var productName = $(this).data('name');\n var deletedQuantity = $(this).data('qty');\n var unavailable = $(this).data('unavailable');\n var iconEmptyCart = $(this).data('srcEmptycart');\n\n var urlParams = {\n pid: productID,\n uuid: uuid\n };\n\n url = appendToUrl(url, urlParams);\n\n $.spinner().start();\n\n $('body').trigger('cart:beforeUpdate');\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n if (data.basket.items.length === 0) {\n \n var htmlEmptyCartTemplate = `\n <div class=\"container cart-empty\">\n <div class=\"row\">\n <div class=\"col-12 text-center\">\n <div class=\"icon-cart-title\">\n <img width=\"20\" height=\"20\" src=\"${iconEmptyCart}\" alt=\"\" />\n </div>\n <h1 class=\"text-uppercase\">${data.basket.resources.emptyCartMsg}</h1>\n <div class=\"d-flex justify-content-center mt-6 mt-lg-8 mb-10\">\n <a href=\"${data.basket.backToShoppingAbsUrl}\" class=\"cta cta-ghost cta-40\" type=\"\">\n <i class=\"ml-0 material-icons notranslate\">arrow_back</i>\n ${data.basket.resources.backToShopping}\n </a>\n </div>\n <p class=\"need-some-help\">\n ${data.basket.resources.needHelpText}\n </p>\n </div>\n </div>\n </div>\n `;\n \n $('.cart-page-title').empty();\n $('.cart').empty().append(htmlEmptyCartTemplate);\n $('.number-of-items').empty().append(data.basket.resources.numberOfItems);\n $('.minicart-quantity').empty().append(data.basket.numItems);\n $('.minicart .minicart-quantity').attr('data-quantity', data.basket.numItems);\n $('.minicart .minicart-quantity').text('');\n $('.minicart-link').attr({\n 'aria-label': data.basket.resources.minicartCountOfItems,\n title: data.basket.resources.minicartCountOfItems\n });\n $('.minicart-link').append('<span class=\"tooltip bottom-tooltip d-none\">'+data.basket.resources.emptyCartTooltipMsg+'</span>');\n $('.minicart .popover').empty();\n $('.minicart .popover').removeClass('show');\n $('body').removeClass('modal-open');\n $('html').removeClass('veiled');\n } else {\n if (data.toBeDeletedUUIDs && data.toBeDeletedUUIDs.length > 0) {\n for (var i = 0; i < data.toBeDeletedUUIDs.length; i++) {\n $('.uuid-' + data.toBeDeletedUUIDs[i]).remove();\n }\n }\n $('.uuid-' + uuid).remove();\n if (!data.basket.hasBonusProduct) {\n $('.bonus-product').remove();\n }\n $('.coupons-and-promos').empty().append(data.basket.totals.discountsHtml);\n updateCartTotals(data.basket);\n updateApproachingDiscounts(data.basket.approachingDiscounts);\n $('body').trigger('setShippingMethodSelection', data.basket);\n validateBasket(data.basket);\n }\n\n $('body').trigger('cart:update', data);\n if (!unavailable) {\n $('body').trigger('afterRemoveFromCart', {\n productID: productID,\n productName: productName,\n deletedQuantity: deletedQuantity\n });\n }\n for (var i = 0; i < data.basket.items.length; i++) {\n var lineItem = data.basket.items[i];\n if (lineItem) {\n var cardItem = $('.card.product-info.uuid-' + lineItem.UUID);\n \n if(cardItem && (lineItem.availability.notAvailable || !lineItem.isOrderable)) {\n cardItem.addClass('error-highlighting');\n } else {\n cardItem.removeClass('error-highlighting');\n cardItem.find('.product-card-footer .custom-isml-message').html('');\n updateAvailability(data.basket, lineItem.UUID);\n }\n }\n }\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n });\n\n $('body').on('change', '.quantity-form > .quantity', function () {\n var preSelectQty = $(this).data('pre-select-qty');\n var quantity = $(this).val();\n var productID = $(this).data('pid');\n var url = $(this).data('action');\n var uuid = $(this).data('uuid');\n\n var urlParams = {\n pid: productID,\n quantity: quantity,\n uuid: uuid\n };\n url = appendToUrl(url, urlParams);\n\n $(this).parents('.card').spinner().start();\n\n $('body').trigger('cart:beforeUpdate');\n\n $.ajax({\n url: url,\n type: 'get',\n context: this,\n dataType: 'json',\n success: function (data) {\n $('.quantity[data-uuid=\"' + uuid + '\"]').val(quantity);\n $('.coupons-and-promos').empty().append(data.totals.discountsHtml);\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n updateAvailability(data, uuid);\n validateBasket(data);\n $(this).data('pre-select-qty', quantity);\n\n $('body').trigger('cart:update', data);\n\n $.spinner().stop();\n if ($(this).parents('.product-info').hasClass('bonus-product-line-item') && $('.cart-page').length) {\n location.reload();\n }\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $(this).val(parseInt(preSelectQty, 10));\n $.spinner().stop();\n }\n }\n });\n });\n\n $('.shippingMethods').change(function () {\n var url = $(this).attr('data-actionUrl');\n var urlParams = {\n methodID: $(this).find(':selected').attr('data-shipping-id')\n };\n // url = appendToUrl(url, urlParams);\n\n $('.totals').spinner().start();\n $('body').trigger('cart:beforeShippingMethodSelected');\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: urlParams,\n success: function (data) {\n if (data.error) {\n window.location.href = data.redirectUrl;\n } else {\n $('.coupons-and-promos').empty().append(data.totals.discountsHtml);\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n validateBasket(data);\n }\n\n $('body').trigger('cart:shippingMethodSelected', data);\n $.spinner().stop();\n },\n error: function (err) {\n if (err.redirectUrl) {\n window.location.href = err.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n });\n\n $('.promo-code-form').submit(function (e) {\n e.preventDefault();\n $.spinner().start();\n $('.coupon-missing-error').hide();\n $('.coupon-error-message').empty();\n if (!$('.coupon-code-field').val()) {\n $('.promo-code-form .form-control').addClass('is-invalid');\n $('.promo-code-form .form-control').attr('aria-describedby', 'missingCouponCode');\n $('.coupon-missing-error').show();\n $.spinner().stop();\n return false;\n }\n var $form = $('.promo-code-form');\n $('.promo-code-form .form-control').removeClass('is-invalid');\n $('.coupon-error-message').empty();\n $('body').trigger('promotion:beforeUpdate');\n\n $.ajax({\n url: $form.attr('action'),\n type: 'GET',\n dataType: 'json',\n data: $form.serialize(),\n success: function (data) {\n if (data.error) {\n $('.promo-code-form .form-control').addClass('is-invalid');\n $('.promo-code-form .form-control').attr('aria-describedby', 'invalidCouponCode');\n $('.coupon-error-message').empty().append(data.errorMessage);\n $('.coupon-error-message').show();\n $('body').trigger('promotion:error', data);\n } else {\n $('.coupons-and-promos').empty().append(data.totals.discountsHtml);\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n validateBasket(data);\n $('body').trigger('promotion:success', data);\n // remove bundle item if all quantity isn't available\n if(data.removedProducts && data.removedProducts.length){\n data.removedProducts.forEach(removedProduct => {\n $(`.uuid-${removedProduct.UUID}`).remove();\n });\n toastr.error(data.updateQuantityMessage);\n }\n\n if(data.unavailableProducts && data.unavailableProducts.length){\n // mark as red product unavailable\n data.unavailableProducts.forEach(product => {\n $(`.uuid-${product.UUID}`).addClass('error-highlighting');\n })\n }\n\n // remove bundle item if OOS\n if(data.listBundleOutOfStock && data.listBundleOutOfStock.length){\n // mark as red product unavailable\n data.listBundleOutOfStock.forEach(product => {\n $(`.uuid-${product.UUID}`).addClass('error-highlighting');\n })\n }\n }\n $('.coupon-code-field').val('');\n $.spinner().stop();\n },\n error: function (err) {\n $('body').trigger('promotion:error', err);\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.errorMessage);\n $.spinner().stop();\n }\n }\n });\n return false;\n });\n\n $('body').on('click', '.remove-coupon', function (e) {\n e.preventDefault();\n\n var couponCode = $(this).data('code');\n var uuid = $(this).data('uuid');\n var $deleteConfirmBtn = $('.delete-coupon-confirmation-btn');\n var $productToRemoveSpan = $('.coupon-to-remove');\n\n $deleteConfirmBtn.data('uuid', uuid);\n $deleteConfirmBtn.data('code', couponCode);\n\n $productToRemoveSpan.empty().append(couponCode);\n });\n\n $('body').on('click', '.delete-coupon-confirmation-btn', function (e) {\n e.preventDefault();\n\n var url = $(this).data('action');\n var uuid = $(this).data('uuid');\n var couponCode = $(this).data('code');\n var urlParams = {\n code: couponCode,\n uuid: uuid\n };\n\n url = appendToUrl(url, urlParams);\n\n //$('body > .modal-backdrop').remove();\n\n $.spinner().start();\n $('body').trigger('promotion:beforeUpdate');\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n success: function (data) {\n $('.coupon-uuid-' + uuid).remove();\n $('.coupon-message-uuid-' + uuid).remove();\n updateCartTotals(data);\n updateApproachingDiscounts(data.approachingDiscounts);\n validateBasket(data);\n $.spinner().stop();\n $('body').trigger('promotion:success', data);\n // remove bundle item if all quantity isn't available\n if(data.removedProducts && data.removedProducts.length){\n data.removedProducts.forEach(removedProduct => {\n $(`.uuid-${removedProduct.UUID}`).remove();\n });\n toastr.error(data.updateQuantityMessage);\n }\n\n if(data.unavailableProducts && data.unavailableProducts.length){\n // mark as red product unavailable\n data.unavailableProducts.forEach(product => {\n $(`.uuid-${product.UUID}`).addClass('error-highlighting');\n })\n }\n \n // remove bundle item if OOS\n if(data.listBundleOutOfStock && data.listBundleOutOfStock.length){\n // mark as red product unavailable\n data.listBundleOutOfStock.forEach(product => {\n $(`.uuid-${product.UUID}`).addClass('error-highlighting');\n })\n }\n },\n error: function (err) {\n $('body').trigger('promotion:error', err);\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n });\n $('body').on('click', '.cart-page .bonus-product-button', function () {\n $.spinner().start();\n $(this).addClass('launched-modal');\n $.ajax({\n url: $(this).data('url'),\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n base.methods.editBonusProducts(data);\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').remove();\n $('.modal-backdrop').remove();\n $('body').removeClass('modal-open');\n\n if ($('.cart-page').length) {\n $('.launched-modal .btn-outline-primary').trigger('focus');\n $('.launched-modal').removeClass('launched-modal');\n } else {\n $('.product-detail .add-to-cart').focus();\n }\n });\n\n $('body').on('click', '.cart-page .product-edit .edit, .cart-page .bundle-edit .edit', function (e) {\n e.preventDefault();\n\n var editProductUrl = $(this).attr('href');\n getModalHtmlElement();\n fillModalElement(editProductUrl);\n });\n\n $('body').on('shown.bs.modal', '#editProductModal', function () {\n $('#editProductModal').siblings().attr('aria-hidden', 'true');\n $('#editProductModal .close').focus();\n });\n\n $('body').on('hidden.bs.modal', '#editProductModal', function () {\n $('#editProductModal').siblings().attr('aria-hidden', 'false');\n });\n\n $('body').on('keydown', '#editProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#editProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.update-cart-product-global',\n nextToLastElementSelector: '.modal-footer .quantity-select'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n\n $('body').on('product:updateAddToCart', function (e, response) {\n // update global add to cart (single products, bundles)\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n $('.update-cart-product-global', dialog).attr('disabled',\n !$('.global-availability', dialog).data('ready-to-order')\n || !$('.global-availability', dialog).data('available')\n );\n });\n\n $('body').on('product:updateAvailability', function (e, response) {\n // bundle individual products\n $('.product-availability', response.$productContainer)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n\n\n var dialog = $(response.$productContainer)\n .closest('.quick-view-dialog');\n\n if ($('.product-availability', dialog).length) {\n // bundle all products\n var allAvailable = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('available'); });\n\n var allReady = $('.product-availability', dialog).toArray()\n .every(function (item) { return $(item).data('ready-to-order'); });\n\n $('.global-availability', dialog)\n .data('ready-to-order', allReady)\n .data('available', allAvailable);\n\n $('.global-availability .availability-msg', dialog).empty()\n .html(allReady ? response.message : response.resources.info_selectforstock);\n } else {\n // single product\n $('.global-availability', dialog)\n .data('ready-to-order', response.product.readyToOrder)\n .data('available', response.product.available)\n .find('.availability-msg')\n .empty()\n .html(response.message);\n }\n });\n\n $('body').on('product:afterAttributeSelect', function (e, response) {\n if ($('.modal.show .product-quickview .bundle-items').length) {\n $('.modal.show').find(response.container).data('pid', response.data.product.id);\n $('.modal.show').find(response.container).find('.product-id').text(response.data.product.id);\n } else {\n $('.modal.show .product-quickview').data('pid', response.data.product.id);\n }\n });\n\n $('body').on('change', '.quantity-select', function () {\n var selectedQuantity = $(this).val();\n $('.modal.show .update-cart-url').data('selected-quantity', selectedQuantity);\n });\n\n $('body').on('change', '.options-select', function () {\n var selectedOptionValueId = $(this).children('option:selected').data('value-id');\n $('.modal.show .update-cart-url').data('selected-option', selectedOptionValueId);\n });\n\n $('body').on('click', '.update-cart-product-global', function (e) {\n e.preventDefault();\n\n var updateProductUrl = $(this).closest('.cart-and-ipay').find('.update-cart-url').val();\n var selectedQuantity = $(this).closest('.cart-and-ipay').find('.update-cart-url').data('selected-quantity');\n var selectedOptionValueId = $(this).closest('.cart-and-ipay').find('.update-cart-url').data('selected-option');\n var uuid = $(this).closest('.cart-and-ipay').find('.update-cart-url').data('uuid');\n\n var form = {\n uuid: uuid,\n pid: base.getPidValue($(this)),\n quantity: selectedQuantity,\n selectedOptionValueId: selectedOptionValueId\n };\n\n $(this).parents('.card').spinner().start();\n\n $('body').trigger('cart:beforeUpdate');\n\n if (updateProductUrl) {\n $.ajax({\n url: updateProductUrl,\n type: 'post',\n context: this,\n data: form,\n dataType: 'json',\n success: function (data) {\n $('#editProductModal').modal('hide');\n\n $('.coupons-and-promos').empty().append(data.cartModel.totals.discountsHtml);\n updateCartTotals(data.cartModel);\n updateApproachingDiscounts(data.cartModel.approachingDiscounts);\n updateAvailability(data.cartModel, uuid);\n updateProductDetails(data, uuid);\n\n if (data.uuidToBeDeleted) {\n $('.uuid-' + data.uuidToBeDeleted).remove();\n }\n\n validateBasket(data.cartModel);\n\n $('body').trigger('cart:update', data);\n\n $.spinner().stop();\n },\n error: function (err) {\n if (err.responseJSON.redirectUrl) {\n window.location.href = err.responseJSON.redirectUrl;\n } else {\n createErrorNotification(err.responseJSON.errorMessage);\n $.spinner().stop();\n }\n }\n });\n }\n });\n initProgressBar();\n\n $('#alert-cart-undo .cart-dismiss-alert').on('click', function () {\n $(\"#alert-cart-undo\").addClass('d-none').fadeOut(500);\n })\n\n $('body').on('click', '.quantity-form .quantity-selector__btn:not(.disabled)', function () {\n debounceQuantity(this);\n });\n\n $('body').on('change', '.quantity-form .quantity-mobile', function () {\n debounceQuantity(this);\n });\n\n base.selectAttribute();\n base.colorAttribute();\n base.removeBonusProduct();\n base.selectBonusProduct();\n base.enableBonusProductSelection();\n base.showMoreBonusProducts();\n base.addBonusProductsToCart();\n base.focusChooseBonusProductModal();\n base.trapChooseBonusProductModalFocus();\n base.onClosingChooseBonusProductModal();\n};\n","'use strict';\nvar footerTriggered = $('.footercontent .container .footer-bottom');\nvar SCROLL_NUMBER = 4;\n\nif ($(window).width() < 768) {\n footerTriggered.append('<div class=\"back-top-btn\" id=\"backTopBtn\"></div>');\n $(window).on('scroll', function () {\n if (isScrolledIntoView('.footercontent') && (getPageHeight() / getWindowHeight()) >= SCROLL_NUMBER) {\n $('#backTopBtn').addClass('show');\n } else {\n $('#backTopBtn').removeClass('show');\n }\n });\n var backTopBtn = $('#backTopBtn');\n backTopBtn.on('click', function (e) {\n e.preventDefault();\n $('html, body').animate({\n scrollTop: 0\n }, '300');\n });\n}\nfunction isScrolledIntoView(elem) {\n var docViewTop = $(window).scrollTop();\n var docViewBottom = docViewTop + $(window).height() - 70;\n var elemTop = $(elem).offset().top;\n var elemBottom = elemTop + $(elem).height();\n return ((elemTop < docViewBottom));\n}\n\nfunction getWindowHeight() {\n return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n}\nfunction getPageHeight() {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.documentElement.clientHeight\n );\n}","'use strict';\nclass Carousel {\n constructor(element) {\n var ctx = this;\n var slidesContainer = $(element);\n var matchMedia = true;\n var opt = ctx.getOpts(slidesContainer);\n\n if (matchMedia) {\n slidesContainer.not('.slick-initialized').slick(opt);\n }\n\n $(window).on('resize orientationchange', function () {\n slidesContainer.slick('resize');\n });\n\n $('.nav-pills a, .nav-pills button').on('shown.bs.tab', function (e) {\n let carousel;\n if (\n $(e.target)\n .parents('.tabs-wrapper')\n .find('.tab-pane.active .product-carousel').length > 0\n ) {\n carousel = $(e.target)\n .parents('.tabs-wrapper')\n .find('.tab-pane.active .product-carousel');\n }\n if (\n $(e.target)\n .parents('.tabs-wrapper')\n .find('.tab-pane.active .categories-carousel').length > 0\n ) {\n carousel = $(e.target)\n .parents('.tabs-wrapper')\n .find('.tab-pane.active .categories-carousel');\n }\n if (\n $(e.target)\n .parents('.tabs-wrapper')\n .find('.tab-pane.active .carousel').length > 0\n ) {\n carousel = $(e.target)\n .parents('.tabs-wrapper')\n .find('.tab-pane.active .carousel');\n }\n if (carousel) {\n carousel.slick('setPosition');\n }\n });\n }\n\n setResponsiveSetting(opts, res, option, value) {\n if (typeof opts.responsive == 'undefined') {\n opts.responsive = [];\n }\n\n var resPresent = false;\n\n $.each(opts.responsive, function (i, resolution) {\n if (resolution['breakpoint'] == res) {\n resPresent = true;\n }\n });\n\n if (!resPresent) {\n opts.responsive.push({\n breakpoint: res,\n settings: {}\n });\n }\n\n $.each(opts.responsive, function (i, resolution) {\n if (resolution['breakpoint'] == res && resolution['settings'] != 'unslick') {\n resolution['settings'][option] = value;\n if (value == 'unslick') {\n resolution['settings'] = value;\n }\n }\n });\n\n return opts;\n }\n\n getOpts($element) {\n var data = $element.data();\n var customPaging;\n\n if (data) {\n var context = data['context'];\n var scope = context ? $element.closest(context) : $element;\n var opts = {};\n\n if (data && !data['slick']) {\n if (data['thumbs']) {\n customPaging = function (slick, i) {\n var $elem = $(slick.$slides[i]).find('img');\n var src = $elem.length ? $elem.data('thumburl') || $elem.attr('src') : undefined;\n var alt = 'thumb-' + i;\n var width ='700';\n var height ='700';\n return '<img data-src=\"' + src + '\" alt=\"' + alt + '\" width=\"' + width + '\" height=\"' + height + '\" class=\"lazyload\" />';\n };\n }\n\n if (data['paged']) {\n $element.addClass('paged');\n customPaging = function (slick, i) {\n var txt = i + 1 + '/' + slick.$slides.length;\n return $('<span class=\"page\"/>').text(txt);\n };\n }\n\n if (data['prevArrow']) {\n //check if is html code or a class string\n if (/<[^>]*>/.test(data['prevArrow'])) {\n data['prevArrow'] = scope.find(data['prevArrow']);\n } else {\n data['prevArrow'] = $(data['prevArrow']).length ? $(data['prevArrow']) : '';\n }\n }\n\n if (data['nextArrow']) {\n //check if is html code or a class string\n if (/<[^>]*>/.test(data['nextArrow'])) {\n data['nextArrow'] = scope.find(data['nextArrow']);\n } else {\n data['nextArrow'] = $(data['nextArrow']).length ? $(data['nextArrow']) : '';\n }\n }\n\n if (data['asNavFor']) {\n data['asNavFor'] = scope.find(data['asNavFor']);\n }\n\n opts = {\n accessibility: typeof data['accessibility'] != 'undefined' ? data['accessibility'] : true, // Enables tabbing and arrow key navigation\n adaptiveHeight: typeof data['adaptiveHeight'] != 'undefined' ? data['adaptiveHeight'] : false, // Enables adaptive height for single slide horizontal carousels.\n asNavFor: data['asNavFor'] || null, // Set the slider to be the navigation of other slider (Class or ID Name)\n autoplay: typeof data['autoplay'] != 'undefined' ? data['autoplay'] : true, // Enables Autoplay\n autoplaySpeed: data['autoplaySpeed'] || 3000, // Autoplay Speed in milliseconds\n appendDots: data['appendDots'],\n appendArrows: data['appendArrows'] || $element,\n arrows: typeof data['arrows'] != 'undefined' ? data['arrows'] : true, // Prev/Next Arrows\n prevArrow: data['prevArrow'] || '<button class=\"slick-prev\"><i class=\"material-icons notranslate\">arrow_back></i></button>',\n nextArrow: data['nextArrow'] || '<button class=\"slick-next\"><i class=\"material-icons notranslate\">arrow_forward</i></button>',\n centerMode: typeof data['centerMode'] != 'undefined' ? data['centerMode'] : false, // Enables centered view with partial prev/next slides. Use with odd numbered slidesToShow counts.\n centerPadding: data['centerPadding'] || '50px', // Side padding when in center mode (px or %)\n cssEase: data['cssEase'] || 'ease', // CSS3 Animation Easing\n customPaging: customPaging || data['customPaging'],\n dots: typeof data['dots'] != 'undefined' ? data['dots'] : customPaging != null, // Show dot indicators\n dotsClass: data['dotsClass'] || 'slick-dots',\n draggable: typeof data['draggable'] != 'undefined' ? data['draggable'] : true, // Enable mouse dragging\n easing: data['easing'] || 'linear', // Add easing for jQuery animate. Use with easing libraries or default easing methods\n edgeFriction: data['edgeFriction'] || 0.35, // Resistance when swiping edges of non-infinite carousels\n fade: typeof data['fade'] != 'undefined' ? data['fade'] : false, // Enable fade\n focusOnSelect: typeof data['focusOnSelect'] != 'undefined' ? data['focusOnSelect'] : false, // Enable focus on selected element (click)\n infinite: typeof data['infinite'] != 'undefined' ? data['infinite'] : true, // Infinite loop sliding\n initialSlide: data['initialSlide'] || 0, // Slide to start on\n lazyLoad: data['lazyLoad'] || 'ondemand', // Set lazy loading technique. Accepts 'ondemand' or 'progressive'\n mobileFirst: typeof data['mobileFirst'] != 'undefined' ? data['mobileFirst'] : false, // Responsive settings use mobile first calculation\n pauseOnHover: typeof data['pauseOnHover'] != 'undefined' ? data['pauseOnHover'] : true, // Pause Autoplay On Hover\n pauseOnDotsHover: typeof data['pauseOnDotsHover'] != 'undefined' ? data['pauseOnDotsHover'] : false, // Pause Autoplay when a dot is hovered\n respondTo: data['respondTo'] || 'window', // Width that responsive object responds to. Can be 'window', 'slider' or 'min' (the smaller of the two)\n rows: data['rows'] || 0, // Setting this to more than 1 initializes grid mode. Use slidesPerRow to set how many slides should be in each row.\n slide: data['slide'] || '', // Element query to use as slide\n slidesPerRow: data['slidesPerRow'] || 1, // With grid mode intialized via the rows option, this sets how many slides are in each grid row. dver\n slidesToShow: data['slidesToShow'] || 2, // # of slides to show\n slidesToScroll: data['slidesToScroll'] || 1, // # of slides to scroll\n speed: data['speed'] || 500, // Slide/Fade animation speed\n swipe: typeof data['swipe'] != 'undefined' ? data['swipe'] : true, // Enable swiping\n swipeToSlide: typeof data['swipeToSlide'] != 'undefined' ? data['swipeToSlide'] : false, // Allow users to drag or swipe directly to a slide irrespective of slidesToScroll\n touchMove: typeof data['touchMove'] != 'undefined' ? data['touchMove'] : true, // Enable slide motion with touch\n touchThreshold: data['touchThreshold'] || 5, // To advance slides, the user must swipe a length of (1/touchThreshold) * the width of the slider\n useCSS: typeof data['useCSS'] != 'undefined' ? data['useCSS'] : true, // Enable/Disable CSS Transitions\n variableWidth: typeof data['variableWidth'] != 'undefined' ? data['variableWidth'] : false, // Variable width slides\n vertical: typeof data['vertical'] != 'undefined' ? data['vertical'] : false, // Vertical slide mode\n verticalSwiping: typeof data['verticalSwiping'] != 'undefined' ? data['verticalSwiping'] : false, // Vertical swipe mode\n waitForAnimate: typeof data['waitForAnimate'] != 'undefined' ? data['waitForAnimate'] : true,\n zIndex: data['zIndex'] || 10,\n slideTitleSelector: data['slideTitleSelector'],\n titleElement: scope.find(data['titleSelector']),\n titleType: data['titleType']\n };\n\n if (data['unslickXs']) {\n this.setResponsiveSetting(opts, 768, 'unslick', 'unslick');\n }\n if (data['unslickSm']) {\n this.setResponsiveSetting(opts, 1024, 'unslick', 'unslick');\n }\n if (data['unslickLg']) {\n this.setResponsiveSetting(opts, 1366, 'unslick', 'unslick');\n this.setResponsiveSetting(opts, 2000, 'unslick', 'unslick');\n }\n\n if (data['slidesToShowLg']) {\n this.setResponsiveSetting(opts, 1366, 'slidesToShow', data['slidesToShowLg']);\n this.setResponsiveSetting(opts, 1366, 'slidesToScroll', data['slidesToScrollLg'] || 1);\n }\n\n if (data['slidesToShowXl']) {\n this.setResponsiveSetting(opts, 1440, 'slidesToShow', data['slidesToShowXl']);\n this.setResponsiveSetting(opts, 1440, 'slidesToScroll', data['slidesToScrollXl'] || 1);\n }\n\n if (data['slidesToShowMd']) {\n this.setResponsiveSetting(opts, 1366, 'slidesToShow', data['slidesToShowMd']);\n this.setResponsiveSetting(opts, 1366, 'slidesToScroll', data['slidesToScrollMd'] || 1);\n }\n\n if (data['slidesToShowSm']) {\n this.setResponsiveSetting(opts, 1024, 'slidesToShow', data['slidesToShowSm']);\n this.setResponsiveSetting(opts, 1024, 'slidesToScroll', data['slidesToScrollSm'] || 1);\n }\n\n if (data['slidesToShowXs']) {\n this.setResponsiveSetting(opts, 768, 'slidesToShow', data['slidesToShowXs']);\n this.setResponsiveSetting(opts, 768, 'slidesToScroll', data['slidesToScrollXs'] || 1);\n }\n\n if (typeof data['appendDotsXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'appendDots', data['appendDotsXs']);\n }\n\n if (typeof data['verticalXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'vertical', data['verticalXs']);\n }\n\n if (typeof data['verticalSwipingXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'verticalSwiping', data['verticalSwipingXs']);\n }\n\n if (typeof data['dotsXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'dots', data['dotsXs']);\n }\n\n if (typeof data['dotsSm'] != 'undefined') {\n this.setResponsiveSetting(opts, 1024, 'dots', data['dotsSm']);\n }\n\n if (typeof data['arrowsXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 360, 'arrows', data['arrowsXs']);\n }\n\n if (typeof data['fadeXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'fade', data['fadeXs']);\n }\n\n if (typeof data['asNavForXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'asNavFor', data['asNavForXs']);\n }\n\n if (typeof data['centerModeSm'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'centerMode', data['centerModeSm']);\n }\n\n if (typeof data['centerModeMd'] != 'undefined') {\n this.setResponsiveSetting(opts, 1024, 'centerMode', data['centerModeMd']);\n }\n\n if (typeof data['centerPaddingXs'] != 'undefined') {\n this.setResponsiveSetting(opts, 768, 'centerPadding', data['centerPaddingXs']);\n }\n\n if (typeof data['centerPaddingMd'] != 'undefined') {\n this.setResponsiveSetting(opts, 1024, 'centerPadding', data['centerPaddingMd']);\n }\n\n if (typeof data['centerPaddingLg'] != 'undefined') {\n this.setResponsiveSetting(opts, 1366, 'centerPadding', data['centerPaddingLg']);\n }\n\n if (typeof data['variableWidthMd'] != 'undefined') {\n this.setResponsiveSetting(opts, 1024, 'variableWidth', data['variableWidthMd']);\n }\n }\n\n return opts;\n }\n }\n}\n\nmodule.exports = function () {\n $.each($('.carousel'), (index, value) => {\n new Carousel(value);\n });\n $('body').on('shippingAddressCarousel:build', () => {\n new Carousel($('.checkout-address-carousel'));\n $('.checkout-address-arrowcarousel').show();\n });\n $('body').on('savedPaymentCarousel:build', () => {\n new Carousel($('.checkout-savedpayment-carousel'));\n });\n $('body').on('shippingBillingAddressCarousel:build', () => {\n new Carousel($('.checkout-billingaddress-carousel'));\n $('.checkout-billingaddress-arrowcarousel').show();\n $('.checkout-billingaddress-carousel').slick('slickGoTo', function () {\n return $('.checkout-billingaddress-carousel input:checked').closest('.slick-slide').data('slickIndex') || 0;\n }());\n });\n};\n","'use strict';\n\n$('input[type=checkbox]').on('change', function(){\n var name = $(this).attr('name');\n if($(this).is(':checked')){\n $('input[name= \"' +name +'\"]').val(true);\n $(this).val(true);\n }\n else{\n $(this).val(false);\n $('input[name= \"' +name +'\"]').val(false);\n }\n});","'use strict';\n\nvar keyboardAccessibility = require('./keyboardAccessibility');\nvar initsGeneralSelect = require('./initInput');\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\n function parseHtml(html) {\n var $html = $('<div>').append($.parseHTML(html));\n\n var body = $html.find('.modal-body');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * This method sets the handler for the change language modal ok button\n */\nfunction setChangeLanguageModalOkButtonHandler() {\n $('body').on('click', '.change-language-modal-ok-button', function (e) {\n e.preventDefault();\n var action = $('.page').data('action');\n var queryString = $('.page').data('querystring');\n var selectedOption = $('#changeLanguageSelect').find(\":selected\");\n var localeCode = $(selectedOption).data('locale');\n var localeCurrencyCode = $(selectedOption).data('currencycode');\n var url = $(this).data('url');\n\n $.ajax({\n url: url,\n type: 'get',\n dataType: 'json',\n data: {\n code: localeCode,\n queryString: queryString,\n CurrencyCode: localeCurrencyCode,\n action: action\n },\n success: function (response) {\n $.spinner().stop();\n if (response && response.redirectUrl) {\n window.location.href = response.redirectUrl;\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n}\n\nmodule.exports = {\n accessibility: function () {\n keyboardAccessibility('.navbar-header .country-selector',\n {\n 40: function ($countryOptions) { // down\n if ($(this).is(':focus')) {\n $countryOptions.first().focus();\n } else {\n $(':focus').next().focus();\n }\n },\n 38: function ($countryOptions) { // up\n if ($countryOptions.first().is(':focus') || $(this).is(':focus')) {\n $(this).focus();\n $(this).removeClass('show');\n } else {\n $(':focus').prev().focus();\n }\n },\n 27: function () { // escape\n $(this).focus();\n $(this).removeClass('show').children('.dropdown-menu').removeClass('show');\n },\n 9: function () { // tab\n $(this).removeClass('show').children('.dropdown-menu').removeClass('show');\n }\n },\n function () {\n if (!($(this).hasClass('show'))) {\n $(this).addClass('show');\n }\n return $(this).find('.dropdown-country-selector').children('a');\n }\n );\n },\n openChangeLanguageModal: function () {\n $('body').on('click', '.open-country-selector-modal-button', function (e) {\n e.preventDefault();\n\n var editProductUrl = $(this).data('action');\n\n $('#modalChangeLanguage').spinner().start();\n \n $.ajax({\n url: editProductUrl,\n method: 'GET',\n dataType: 'json',\n success: function (data) {\n var parsedHtml = parseHtml(data.renderedTemplate);\n\n $('#modalChangeLanguage .modal-body').empty();\n $('#modalChangeLanguage .modal-body').html(parsedHtml.body);\n $('#modalChangeLanguage .modal-footer').html(parsedHtml.footer);\n $('#modalChangeLanguage .modal-header .close .sr-only').text(data.closeButtonText);\n $('#modalChangeLanguage .enter-message').text(data.enterDialogMessage);\n $('#modalChangeLanguage').modal('show');\n setChangeLanguageModalOkButtonHandler();\n // $('body').trigger('editwishlistproduct:ready');\n initsGeneralSelect.initGeneralSelect($('.init-general-select'));\n $.spinner().stop();\n },\n error: function () {\n $('#modalChangeLanguage').spinner().stop();\n }\n });\n });\n }\n};\n","'use strict';\n\nvar $openProfileMenuClass = '.js-profile-trigger';\nvar $openProfileMenuTrigger = $('.js-profile-trigger');\nvar $contentProfileMenu = $('.js-profile-menu-content');\nvar DELTA = 210; //scrollable px parameters\nvar BREAK_POINT_MBL = '769'; //breakpoint md\nvar LAST_SCROLL_TOP = 0;\nvar $navbarHeight = $('header').outerHeight();\nvar $isMobile = $(window).width() <= BREAK_POINT_MBL;\n\nfunction isScrollDownStickyHeader() {\n $(window).scroll(function (event) {\n var initScrollTop = $(this).scrollTop();\n if (Math.abs(LAST_SCROLL_TOP - initScrollTop) <= DELTA)\n return;\n if ((initScrollTop > LAST_SCROLL_TOP) && (LAST_SCROLL_TOP > 0)) {\n $(\"header\").css(\"top\", \"-\" + $navbarHeight + \"px\");\n } else {\n $(\"header\").css(\"top\", \"0\");\n }\n LAST_SCROLL_TOP = initScrollTop;\n });\n}\n\nmodule.exports = function () {\n $(document).on('click',function(event){\n var $target = $(event.target);\n if(!$target.is($openProfileMenuClass)){\n $contentProfileMenu.removeClass(\"active\");\n }\n });\n\n $openProfileMenuTrigger.on('click', function(e){\n $contentProfileMenu.toggleClass('active');\n e.stopPropagation();\n })\n\n //sticky header show & hide scrolldown mbl only\n if ($isMobile) {\n isScrollDownStickyHeader();\n }\n\n};\n","'use strict';\n\nrequire('select2/dist/js/select2');\nrequire('libphonenumber-js');\n\nconst parsePhoneNumber = require('libphonenumber-js/max');\nconst examples = require('libphonenumber-js/mobile/examples');\n\nfunction formatNumberInternational(country, number) {\n if(country && number){\n var parseNumber = parsePhoneNumber(country + number);\n if(parseNumber) {\n var internationalNumber = parseNumber.format('INTERNATIONAL', { spaceSeparatedComponents: true });\n } else {\n var internationalNumber = country + ' ' + number;\n }\n return internationalNumber;\n }\n}\n\nfunction formatState (opt) {\n if (!opt.id) {\n return opt.text.toUpperCase();\n } \n var optimage = $(opt.element).attr('data-image');\n if(!optimage){\n return opt.text.toUpperCase();\n } else { \n var templateHtml = `\n <div class=\"select2-wrap-content d-flex align-items-center mr-4\">\n <div>\n <img src=\"${optimage}\" height=\"24px\" width=\"24px\" />\n </div>\n <div class=\"ml-4\">\n ${opt.id}\n </div>\n </div>\n `\n var $opt = $(templateHtml)\n return $opt;\n }\n};\n\nfunction formatResult (opt) {\n if (!opt.id) {\n return opt.text.toUpperCase();\n } \n var optimage = $(opt.element).attr('data-image');\n if(!optimage){\n return opt.text.toUpperCase();\n } else { \n var templateHtml = `\n <div class=\"select2-wrap-content d-flex align-items-center mr-4\">\n <div>\n <img src=\"${optimage}\" height=\"24px\" width=\"24px\" />\n </div>\n <div class=\"ml-4\">\n ${opt.text}\n </div>\n </div>\n `\n var $opt = $(templateHtml)\n return $opt;\n }\n};\n\nfunction initPrefixSelect(selectPrefixPhone) {\n if(selectPrefixPhone) {\n selectPrefixPhone.each(function(index, element) {\n if($(this).is(':visible')) {\n $(this).select2({\n templateResult: formatResult,\n templateSelection: formatState,\n width: 'auto',\n dropdownParent: $(this).parent().find('.select-dropdown-content')\n });\n }\n });\n }\n}\n\n// use in inputfield isml for init general select\n// xhtmlclass=\"init-general-select\"\n\nfunction initGeneralSelect(selectGeneral) {\n if(selectGeneral) {\n selectGeneral.each(function(index, element) {\n if(!$(this).hasClass(\"select2-hidden-accessible\")) {\n $(this).select2({\n minimumResultsForSearch: -1,\n placeholder: $(this).data('placeholder') || \"Select\",\n allowClear: true,\n width: 'null',\n dropdownParent: $(this).parent().find('.select-dropdown-content')\n });\n }\n });\n }\n}\n\n$(document).ready(function() {\n var selectPrefixPhone = $(\"select.prefixPhone\");\n var generalSelect = $('select.init-general-select');\n if(selectPrefixPhone) {\n initPrefixSelect(selectPrefixPhone);\n }\n if(generalSelect) {\n initGeneralSelect(generalSelect);\n }\n});\n\n$(document).ajaxComplete(function() {\n var selectPrefixPhone = $(\"select.prefixPhone\");\n if(selectPrefixPhone) {\n initPrefixSelect(selectPrefixPhone);\n }\n});\n\n$('.btn-show-details').on('click', function () {\n var parentBox = $(this).closest('.checkout-address-item');\n var prefixSelect = parentBox.find('.prefixPhone');\n initPrefixSelect(prefixSelect);\n});\n\n$('a[data-toggle=\"tab\"]').on('shown.bs.tab', function (e) {\n var target = $(e.target).attr('href');\n var selectToInit = $(target).find('.prefixPhone');\n initPrefixSelect(selectToInit);\n});\n\n$('.switch > input[type=checkbox]').on('change', function(e){\n var selectToRender = $(this).closest('.form-group').find('select.init-general-select');\n /* if(selectToRender && $(this).is(':checked')) {\n selectToRender.each(function(index, element) {\n if(!$(this).hasClass(\"select2-hidden-accessible\")) {\n $(this).select2({\n minimumResultsForSearch: -1,\n width: '100%',\n placeholder: $(this).data('placeholder') || \"Select\",\n allowClear: false,\n dropdownParent: $(this).parent().find('.select-dropdown-content')\n });\n }\n });\n } */\n})\n\n$('.addressSelector').on('change', function (e) {\n var selectPrefix = $(this).closest('.checkout-address-item').find('.prefixPhone');\n initPrefixSelect(selectPrefix);\n});\n\n$('select.prefixPhone').on('change', function(){\n var countrySelected = $(this).find('option:selected').attr('data-country') && $(this).find('option:selected').attr('data-country').toUpperCase();\n var inputPhone = $(this).parent().find('.phone-number-input');\n var internationalPhoneNumber = $(this).parent().find('.internationalPhoneNumber');\n inputPhone.val(\"\");\n internationalPhoneNumber.val(\"\");\n var formattingPlaceholder = parsePhoneNumber(examples[countrySelected], countrySelected);\n inputPhone.attr('placeholder', formattingPlaceholder.formatNational());\n $(this).closest('.custom-phone-multiinput').find('.phone-number-input').removeClass('is-invalid');\n $(this).closest('.custom-phone-multiinput').find('.invalid-feedback').text('');\n});\n\n$('.phone-number-input').on('focusout', function(e) {\n var $this = $(this);\n var digitPhone = $(this).val();\n var country = $(this).parent().find('select option:selected').attr('data-country') && $(this).parent().find('select option:selected').attr('data-country').toUpperCase();\n var generalErrorCh = $this.attr('data-general-error') || \"Error invalid number phone CH\";\n var generalErrorWorld = $this.attr('data-general-world-error') || \"Error invalid number phone all country\";\n var parseNumber = parsePhoneNumber(digitPhone, country);\n\n\n if(country && country == 'CH') {\n if(parseNumber && !parseNumber.isValid() && digitPhone.length >= 10) {\n $this.addClass('is-invalid');\n $this.closest('.custom-phone-multiinput').find('.invalid-feedback').text(generalErrorCh);\n } else if(digitPhone && digitPhone.length < 10) {\n $this.addClass('is-invalid');\n $this.closest('.custom-phone-multiinput').find('.invalid-feedback').text(generalErrorCh);\n } else {\n $this.removeClass('is-invalid');\n $this.closest('.custom-phone-multiinput').find('.invalid-feedback').text('');\n }\n } else {\n if( (parseNumber && !parseNumber.isValid()) || !parseNumber ) {\n $this.addClass('is-invalid');\n $this.closest('.custom-phone-multiinput').find('.invalid-feedback').text(generalErrorWorld);\n } else {\n $this.removeClass('is-invalid');\n $this.closest('.custom-phone-multiinput').find('.invalid-feedback').text('');\n }\n }\n})\n\n$('.phone-number-input').on('input', function(e) {\n var digitPhone = $(this).val();\n var country = $(this).parent().find('select option:selected').attr('data-country') && $(this).parent().find('select option:selected').attr('data-country').toUpperCase();\n var countryPrefix = $(this).parent().find('select option:selected') && $(this).parent().find('select option:selected').val();\n if(digitPhone && country) {\n const asYouType = new parsePhoneNumber.AsYouType(country);\n var digitingNumber = asYouType.input(digitPhone.toString());\n $(this).val(digitingNumber);\n var checkDigitPhone = digitPhone.replace(/\\s/g, '');\n\n if(country && country == 'CH') {\n if (checkDigitPhone && checkDigitPhone.length >= 10) {\n var valInput = $(this).val() && $(this).val().replace(/\\s/g, '').slice(0,10);\n const asYouType2 = new parsePhoneNumber.AsYouType(country);\n var newDigitingNumber = asYouType2.input(valInput.toString());\n $(this).val(newDigitingNumber);\n }\n } else {\n $(this).attr('minlength', 1);\n $(this).attr('maxlength', 30);\n }\n\n var parseNumber = parsePhoneNumber(digitPhone, country);\n if(parseNumber && countryPrefix && digitPhone){\n var internationalNumber = parseNumber.format('INTERNATIONAL', { spaceSeparatedComponents: true });\n $(this).next('.internationalPhoneNumber').val(internationalNumber || '');\n } else {\n $(this).next('.internationalPhoneNumber').val(countryPrefix + ' ' + digitPhone);\n }\n } else {\n $(this).next('.internationalPhoneNumber').val('');\n }\n});\n\n$(document).on('phoneNumbeFormatted', function (e, phoneNumbeFormatted) {\n var shippingPhone = $('.summary-details.shipping .phone').html();\n var shippingPrefixPhone = $('.summary-details.shipping .prefixPhone').html() || '+41'\n var billingPhone = $('.summary-details.billing .phone').html();\n var billingPrefixPhone = $('.summary-details.billing .prefixPhone').html() || '+41';\n\n\n if (shippingPhone && billingPhone) {\n phoneNumbeFormatted.shippingPhone = parsePhoneNumber(shippingPrefixPhone.replace(/\\s+/g, '') + shippingPhone.replace(/\\s+/g, '')).format('INTERNATIONAL', { spaceSeparatedComponents: true });\n phoneNumbeFormatted.billingPhone = parsePhoneNumber(billingPrefixPhone.replace(/\\s+/g, '') + billingPhone.replace(/\\s+/g, '') ).format('INTERNATIONAL', { spaceSeparatedComponents: true })\n }\n});\n\n$(document).on('phoneNumbeInternationalFormatted', function (e) {\n var shippingPhone = $(e.currentTarget).find('.summary-details.shipping .phone').html().replace(/\\s+/g, '');\n var shippingPrefixPhone = $(e.currentTarget).find('.summary-details.shipping .prefixPhone').html().replace(/\\s+/g, '') || '+41'\n var billingPhone = $(e.currentTarget).find('.summary-details.billing .phone').html().replace(/\\s+/g, '');\n var billingPrefixPhone = $(e.currentTarget).find('.summary-details.billing .prefixPhone').html().replace(/\\s+/g, '') || '+41';\n var shippingInternationalNumber = $(e.currentTarget).find('.summary-details.shipping .internationalPhone');\n var billingInternationalNumber = $(e.currentTarget).find('.summary-details.billing .internationalPhone');\n\n shippingInternationalNumber.text(formatNumberInternational(shippingPrefixPhone, shippingPhone));\n billingInternationalNumber.text(formatNumberInternational(billingPrefixPhone, billingPhone));\n});\n\nmodule.exports = {\n initGeneralSelect: initGeneralSelect,\n initPrefixSelect: initPrefixSelect,\n formatNumberInternational: formatNumberInternational\n};","'use strict';\n\nvar $end_date_input = $('input[type=date]');\n\nfunction dateToDate(date) {\n let params = date.split('-');\n params[1]--; // months are zero indexed\n return new Date(...params);\n};\n\nmodule.exports = {\n \n checkDateInput: function() {\n $end_date_input.on('input propertychange', function(){\n if(dateToDate(this.value) > dateToDate(this.max)){\n this.value = this.max;\n }\n });\n },\n};\n","'use strict';\n\nvar $buttonShowHidePassword = $('.js-password-showhide');\nvar $inputRegisterPassword = $('.validator-password input[type=password]');\n\nfunction validatePassword(selector, regex, pswd) {\n if(selector && regex && pswd != undefined) {\n if (pswd.match(regex) ) {\n selector.removeClass('invalid').addClass('valid');\n } else {\n selector.removeClass('valid').addClass('invalid');\n }\n }\n}\n\nmodule.exports = {\n showHidePassword: function() {\n $buttonShowHidePassword.on('click', function(e){\n var $input = $(this).prev();\n var $buttonIconsEye = $(this).find('.material-icons');\n if ($input[0].type === \"password\") {\n $input[0].type = \"text\";\n $buttonIconsEye.text('visibility_off');\n } else {\n $input[0].type = \"password\";\n $buttonIconsEye.text('visibility');\n }\n })\n },\n matchRegex: function() {\n $(document).ready(function() {\n $inputRegisterPassword.keyup(function() {\n var pswd = $(this).val();\n var $inputParent = $inputRegisterPassword.parent();\n //TODO passare il this con il paramter incluso \n //validatePassword($inputRegisterPassword.parent().find('#letter'), /[A-z]/, pswd);\n validatePassword($inputRegisterPassword.parent().find('#capital'), /[A-Z]/, pswd);\n validatePassword($inputRegisterPassword.parent().find('#number'), /\\d/, pswd);\n validatePassword($inputRegisterPassword.parent().find('#spaces'), /^\\S+$/, pswd);\n validatePassword($inputRegisterPassword.parent().find('#length'), /^.{8,20}$/, pswd);\n validatePassword($inputRegisterPassword.parent().find('#special'), /[!@#$%&*()+\\-/:;<=>?@[\\\\\\]^_`{|}~]/, pswd);\n }).focus(function() {\n $(this).siblings('#pswd_info').show();\n }).blur(function() {\n $(this).siblings('#pswd_info').hide();\n });\n \n });\n }\n};\n","'use strict';\n\nmodule.exports = function (selector, keyFunctions, preFunction) {\n $(selector).on('keydown', function (e) {\n var key = e.which;\n var supportedKeyCodes = [37, 38, 39, 40, 27];\n if (supportedKeyCodes.indexOf(key) >= 0) {\n e.preventDefault();\n }\n var returnedScope = preFunction.call(this);\n if (keyFunctions[key]) {\n keyFunctions[key].call(this, returnedScope);\n }\n });\n};\n","'use strict';\n\nvar cart = require('../cart/cart');\n\nvar updateMiniCart = true;\n\nmodule.exports = function () {\n cart();\n\n $('.minicart').on('count:update', function (event, count) {\n if (count && $.isNumeric(count.quantityTotal)) {\n $('.minicart .minicart-quantity').text(count.quantityTotal);\n $('.minicart .minicart-quantity').attr('data-quantity', count.quantityTotal)\n $('.minicart .minicart-link').attr({\n 'aria-label': count.minicartCountOfItems,\n title: count.minicartCountOfItems\n });\n }\n });\n\n $('.minicart').on('mouseenter focusin touchstart', function () {\n if ($('.search:visible').length === 0) {\n return;\n }\n var url = $('.minicart').data('action-url');\n var count = parseInt($('.minicart .minicart-quantity').text(), 10);\n\n if (count !== 0 && $('.minicart .popover.show').length === 0) {\n if (!updateMiniCart) {\n $('.minicart .popover').addClass('show');\n return;\n }\n\n $('.minicart .popover').addClass('show');\n $('.minicart .popover').spinner().start();\n $.get(url, function (data) {\n $('.minicart .popover').empty();\n $('.minicart .popover').append(data);\n updateMiniCart = false;\n $.spinner().stop();\n });\n }\n });\n $('body').on('touchstart click', function (e) {\n if ($('.minicart').has(e.target).length <= 0) {\n $('.minicart .popover').removeClass('show');\n }\n });\n $('.minicart').on('mouseleave focusout', function (event) {\n if ((event.type === 'focusout' && $('.minicart').has(event.target).length > 0)\n || (event.type === 'mouseleave' && $(event.target).is('.minicart .quantity'))\n || $('body').hasClass('modal-open')) {\n event.stopPropagation();\n return;\n }\n $('.minicart .popover').removeClass('show');\n });\n $('body').on('change', '.minicart .quantity', function () {\n if ($(this).parents('.bonus-product-line-item').length && $('.cart-page').length) {\n location.reload();\n }\n });\n $('body').on('product:afterAddToCart', function () {\n updateMiniCart = true;\n });\n $('body').on('cart:update', function () {\n updateMiniCart = true;\n });\n};\n","'use strict';\n\n/**\n * Show a spinner inside a given element\n * @param {element} $target - Element to block by the veil and spinner.\n * Pass body to block the whole page.\n */\nfunction addSpinner($target) {\n var $veil = $('<div class=\"veil\"><div class=\"underlay\"></div></div>');\n $veil.append('<div class=\"spinner\"><div class=\"dot1\"></div></div>');\n if ($target.get(0).tagName === 'IMG') {\n $target.after($veil);\n $veil.css({ width: $target.width(), height: $target.height() });\n if ($target.parent().css('position') === 'static') {\n $target.parent().css('position', 'relative');\n }\n } else {\n $target.append($veil);\n if ($target.css('position') === 'static') {\n $target.parent().css('position', 'relative');\n $target.parent().addClass('veiled');\n }\n if ($target.get(0).tagName === 'BODY') {\n $veil.find('.spinner').css('position', 'fixed');\n }\n }\n $veil.click(function (e) {\n e.stopPropagation();\n });\n}\n\n/**\n * Remove existing spinner\n * @param {element} $veil - jQuery pointer to the veil element\n */\nfunction removeSpinner($veil) {\n if ($veil.parent().hasClass('veiled')) {\n $veil.parent().css('position', '');\n $veil.parent().removeClass('veiled');\n }\n $veil.off('click');\n $veil.remove();\n}\n\n// element level spinner:\n$.fn.spinner = function () {\n var $element = $(this);\n var Fn = function () {\n this.start = function () {\n if ($element.length) {\n addSpinner($element);\n }\n };\n this.stop = function () {\n if ($element.length) {\n var $veil = $('.veil');\n removeSpinner($veil);\n }\n };\n };\n return new Fn();\n};\n\n// page-level spinner:\n$.spinner = function () {\n var Fn = function () {\n this.start = function () {\n addSpinner($('body'));\n };\n this.stop = function () {\n removeSpinner($('.veil'));\n };\n };\n return new Fn();\n};\n","\"use strict\";\n\nrequire('swiper/element/bundle');\n\nimport { Swiper } from \"swiper\";\n\nclass SwiperCombineSlider {\n constructor(element1, element2) {\n var ctx = this;\n var sliderOne = $(element1);\n var sliderTwo = $(element2);\n\n // INIT SLIDER WITH CONTENT (slider vertical)\n sliderOne = new Swiper(\".swiper\", {\n loop: false,\n allowTouchMove: true,\n //cssMode: true,\n breakpoints: {\n 320: {\n slidesPerView: 1,\n direction: \"horizontal\",\n //cssMode: true\n },\n 640: {\n slidesPerView: 3,\n direction: \"vertical\",\n }\n },\n on: {\n init: function () {\n this.slides.forEach(function (slide, index) {\n slide.setAttribute('data-slide-index', index);\n });\n }\n }\n });\n\n // INIT SLIDER ONLY CONTROLLER (pagination horizontal)\n sliderTwo = new Swiper(\".swiper-control\", {\n direction: 'horizontal',\n breakpoints: {\n 320: {\n slidesPerView: 1,\n },\n 640: {\n slidesPerView: 3,\n }\n },\n pagination: {\n el: \".swiper-pagination\",\n clickable: true,\n dynamicBullets: true,\n dynamicMainBullets: 4\n },\n navigation: {\n nextEl: \".swiper-button-next\",\n prevEl: \".swiper-button-prev\",\n }\n });\n\n sliderOne.controller.control = sliderTwo;\n sliderTwo.controller.control = sliderOne;\n\n }\n}\n\nexport default function() {\n $(\"body\").on(\"storesList:build\", () => {\n new SwiperCombineSlider('.swiper', '.swiper-control');\n })\n};","'use strict';\n\nimport * as toastr from \"toastr\";\nwindow.toastr = toastr;\n\n//https://codeseven.github.io/toastr/demo.html\n//how to use:\n//isml: <div class=\"toastr-custom\" data-type=\"info\" data-msg=\"lorem ipsum lorem ipsum\"></div>\n//js: window.toastr.info('show message');\nclass Toastr {\n constructor(elem) {\n this.$elem = $(elem);\n this.getOpts();\n }\n getOpts() {\n var data = this.$elem.data();\n if (data) {\n var msg = data['msg'] || this.$elem.html();\n var opts = {\n closeButton: data['closeButton'] || true,\n debug: data['debug'] || false,\n newestOnTop: data['newestOnTop'] || true,\n progressBar: data['progressBar'] || false,\n positionClass: data['positionClass'] || \"toast-top-center\", //toast-top-right, toast-bottom-right, toast-bottom-left, toast-top-left, toast-top-full-width, toast-bottom-full-width, toast-top-center, toast-bottom-center\n preventDuplicates: data['preventDuplicates'] || true,\n iconClasses: { //to choose background\n error: 'toast-error bg-error-100',\n info: 'bg-info',\n success: 'toast-success',\n warning: 'bg-warning'\n },\n toastClass: 'toast',\n titleClass: data['titleClass'] || 'toast-title',\n messageClass: data['messageClass'] || 'toast-message',\n closeClass: data['closeClass'] || 'toast-close-button',\n showDuration: data['showDuration'] || 300,\n onclick: data['onclick'] || null,\n hideDuration: data['hideDuration'] || 1000,\n timeOut: data['timeOut'] || 7000,\n extendedTimeOut: data['extendedTimeOut'] || 1000,\n showEasing: data['showEasing'] || \"swing\",\n hideEasing: data['hideEasing'] || \"linear\",\n showMethod: data['showMethod'] || \"fadeIn\",\n hideMethod: data['hideMethod'] || \"fadeOut\",\n tapToDismiss: data['tapToDismiss'] || false\n };\n // toastr.remove();\n toastr.options = opts;\n toastr.options.closeHtml = '<button class=\"custom-close-icon\"></button>';\n toastr[data['type'] || 'info'](msg); //type: info, warning, success, error\n }\n }\n}\n\ntoastr.options = {\n \"closeButton\": true,\n \"debug\": false,\n \"newestOnTop\": true,\n \"progressBar\": false,\n \"positionClass\": \"toast-top-center\",\n \"preventDuplicates\": true,\n \"onclick\": null,\n \"showDuration\": \"7000\",\n \"hideDuration\": \"500\",\n \"timeOut\": \"7000\",\n \"extendedTimeOut\": \"10000000000000000000000\",\n \"showEasing\": \"swing\",\n \"hideEasing\": \"linear\",\n \"showMethod\": \"fadeIn\",\n \"hideMethod\": \"fadeOut\",\n \"tapToDismiss\": false,\n \"closeOnHover\": false,\n onShown: function() {\n if($('header').is(':visible') && $('header').css('top') === '0px') {\n $('#toast-container').css(\"top\", \"90px\");\n } else {\n $('#toast-container').css(\"top\", \"20px\");\n }\n },\n}\n\ntoastr.options.closeHtml = '<button class=\"custom-close-icon\"></button>';\n\nexport default function() {\n $.each($('.toastr-custom'), function () {\n new Toastr(this);\n });\n}","require('bootstrap/js/src/util.js');\nrequire('bootstrap/js/src/alert.js');\n// require('bootstrap/js/src/button.js');\nrequire('bootstrap/js/src/carousel.js');\nrequire('bootstrap/js/src/collapse.js');\nrequire('bootstrap/js/src/dropdown.js');\nrequire('bootstrap/js/src/modal.js');\nrequire('bootstrap/js/src/scrollspy.js');\nrequire('bootstrap/js/src/tab.js');\n// require('bootstrap/js/src/tooltip.js');\n// require('bootstrap/js/src/popover.js');\n","'use strict';\nmodule.exports = function () {\n var sizes = ['xs', 'sm', 'md', 'lg', 'xl'];\n\n sizes.forEach(function (size) {\n var selector = '.collapsible-' + size + ' .title';\n $('body').on('click', selector, function (e) {\n e.preventDefault();\n $(this).parents('.collapsible-' + size).toggleClass('active');\n\n if ($(this).parents('.collapsible-' + size).hasClass('active')) {\n $(this).attr('aria-expanded', true);\n } else {\n $(this).attr('aria-expanded', false);\n }\n });\n });\n};\n","'use strict';\n\nmodule.exports = {\n setTabNextFocus: function (focusParams) {\n var KEYCODE_TAB = 9;\n var isTabPressed = (focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB);\n\n if (!isTabPressed) {\n return;\n }\n\n var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);\n var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);\n\n if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {\n lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);\n if ($('.product-quickview.product-set').length > 0) {\n var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');\n lastFocusableEl = linkElements[linkElements.length - 1];\n }\n }\n\n if (focusParams.event.shiftKey) /* shift + tab */ {\n if ($(':focus').is(firstFocusableEl)) {\n lastFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n } else /* tab */ {\n if ($(':focus').is(lastFocusableEl)) { // eslint-disable-line\n firstFocusableEl.focus();\n focusParams.event.preventDefault();\n }\n }\n }\n};\n","'use strict';\n\nvar scrollAnimate = require('./scrollAnimate');\n\n/**\n * appends params to a url\n * @param {string} data - data returned from the server's ajax call\n * @param {Object} button - button that was clicked for email sign-up\n */\nfunction displayMessage(data, button) {\n $.spinner().stop();\n var status;\n if (data.success) {\n status = 'alert-success';\n } else {\n status = 'alert-danger';\n }\n\n if ($('.email-signup-message').length === 0) {\n $('body').append(\n '<div class=\"email-signup-message\"></div>'\n );\n }\n $('.email-signup-message')\n .append('<div class=\"email-signup-alert text-center ' + status + '\">' + data.msg + '</div>');\n\n setTimeout(function () {\n $('.email-signup-message').remove();\n button.removeAttr('disabled');\n }, 3000);\n}\n\nmodule.exports = function () {\n $('.back-to-top').click(function () {\n scrollAnimate();\n });\n\n $('.subscribe-email').on('click', function (e) {\n e.preventDefault();\n var url = $(this).data('href');\n var button = $(this);\n var emailId = $('input[name=hpEmailSignUp]').val();\n $.spinner().start();\n $(this).attr('disabled', true);\n $.ajax({\n url: url,\n type: 'post',\n dataType: 'json',\n data: {\n emailId: emailId\n },\n success: function (data) {\n displayMessage(data, button);\n },\n error: function (err) {\n displayMessage(err, button);\n }\n });\n });\n};\n","'use strict';\n\nmodule.exports = function (element) {\n var position = element && element.length ? element.offset().top : 0;\n $('html, body').animate({\n scrollTop: position\n }, 500);\n if (!element) {\n $('.logo-home').focus();\n }\n};\n","'use strict';\n\nvar debounce = require('lodash/debounce');\nvar endpoint = $('.suggestions-wrapper').data('url');\nvar minChars = 1;\nvar UP_KEY = 38;\nvar DOWN_KEY = 40;\nvar DIRECTION_DOWN = 1;\nvar DIRECTION_UP = -1;\n\n/**\n * Retrieves Suggestions element relative to scope\n *\n * @param {Object} scope - Search input field DOM element\n * @return {JQuery} - .suggestions-wrapper element\n */\nfunction getSuggestionsWrapper(scope) {\n return $(scope).siblings('.suggestions-wrapper');\n}\n\n/**\n * Determines whether DOM element is inside the .search-mobile class\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n * @return {boolean} - Whether DOM element is inside div.search-mobile\n */\nfunction isMobileSearch(scope) {\n return !!$(scope).closest('.search-mobile').length;\n}\n\n/**\n * Remove modal classes needed for mobile suggestions\n *\n */\nfunction clearModals() {\n $('body').removeClass('modal-open');\n $('header').siblings().attr('aria-hidden', 'false');\n $('.suggestions').removeClass('modal');\n}\n\n/**\n * Apply modal classes needed for mobile suggestions\n *\n * @param {Object} scope - Search input field DOM element\n */\nfunction applyModals(scope) {\n if (isMobileSearch(scope)) {\n $('body').addClass('modal-open');\n $('header').siblings().attr('aria-hidden', 'true');\n getSuggestionsWrapper(scope).find('.suggestions').addClass('modal');\n }\n}\n\n/**\n * Tear down Suggestions panel\n */\nfunction tearDownSuggestions() {\n $('input.search-field').val('');\n clearModals();\n $('.search-mobile .suggestions').unbind('scroll');\n $('.suggestions-wrapper').empty();\n}\n\n/**\n * Toggle search field icon from search to close and vice-versa\n *\n * @param {string} action - Action to toggle to\n */\nfunction toggleSuggestionsIcon(action) {\n var mobileSearchIcon = '.search-mobile button.';\n var iconSearch = 'fa-search';\n var iconSearchClose = 'fa-close';\n\n if (action === 'close') {\n $(mobileSearchIcon + iconSearch).removeClass(iconSearch).addClass(iconSearchClose).attr('type', 'button');\n } else {\n $(mobileSearchIcon + iconSearchClose).removeClass(iconSearchClose).addClass(iconSearch).attr('type', 'submit');\n }\n}\n\n/**\n * Determines whether the \"More Content Below\" icon should be displayed\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n */\nfunction handleMoreContentBelowIcon(scope) {\n if (($(scope).scrollTop() + $(scope).innerHeight()) >= $(scope)[0].scrollHeight) {\n $('.more-below').fadeOut();\n } else {\n $('.more-below').fadeIn();\n }\n}\n\n/**\n * Positions Suggestions panel on page\n *\n * @param {Object} scope - DOM element, usually the input.search-field element\n */\nfunction positionSuggestions(scope) {\n var outerHeight;\n var $scope;\n var $suggestions;\n var top;\n\n if (isMobileSearch(scope)) {\n $scope = $(scope);\n top = $scope.offset().top;\n outerHeight = $scope.outerHeight();\n $suggestions = getSuggestionsWrapper(scope).find('.suggestions');\n $suggestions.css('top', top + outerHeight);\n\n handleMoreContentBelowIcon(scope);\n\n // Unfortunately, we have to bind this dynamically, as the live scroll event was not\n // properly detecting dynamic suggestions element's scroll event\n $suggestions.scroll(function () {\n handleMoreContentBelowIcon(this);\n });\n }\n}\n\n/**\n * Process Ajax response for SearchServices-GetSuggestions\n *\n * @param {Object|string} response - Empty object literal if null response or string with rendered\n * suggestions template contents\n */\nfunction processResponse(response) {\n var $suggestionsWrapper = getSuggestionsWrapper(this).empty();\n\n $.spinner().stop();\n\n if (typeof (response) !== 'object') {\n $suggestionsWrapper.append(response).show();\n $(this).siblings('.reset-button').addClass('d-sm-block');\n positionSuggestions(this);\n\n if (isMobileSearch(this)) {\n toggleSuggestionsIcon('close');\n applyModals(this);\n }\n\n // Trigger screen reader by setting aria-describedby with the new suggestion message.\n var suggestionsList = $('.suggestions .item');\n if ($(suggestionsList).length) {\n $('input.search-field').attr('aria-describedby', 'search-result-count');\n } else {\n $('input.search-field').removeAttr('aria-describedby');\n }\n } else {\n $suggestionsWrapper.hide();\n }\n}\n\n/**\n * Retrieve suggestions\n *\n * @param {Object} scope - Search field DOM element\n */\nfunction getSuggestions(scope) {\n if ($(scope).val().length >= minChars) {\n $.spinner().start();\n $.ajax({\n context: scope,\n url: endpoint + encodeURIComponent($(scope).val()),\n method: 'GET',\n success: processResponse,\n error: function () {\n $.spinner().stop();\n }\n });\n } else {\n toggleSuggestionsIcon('search');\n $(scope).siblings('.reset-button').removeClass('d-sm-block');\n clearModals();\n getSuggestionsWrapper(scope).empty();\n }\n}\n\n/**\n * Handle Search Suggestion Keyboard Arrow Keys\n *\n * @param {Integer} direction takes positive or negative number constant, DIRECTION_UP (-1) or DIRECTION_DOWN (+1)\n */\nfunction handleArrow(direction) {\n // get all li elements in the suggestions list\n var suggestionsList = $('.suggestions .item');\n if (suggestionsList.filter('.selected').length === 0) {\n suggestionsList.first().addClass('selected');\n $('input.search-field').each(function () {\n $(this).attr('aria-activedescendant', suggestionsList.first()[0].id);\n });\n } else {\n suggestionsList.each(function (index) {\n var idx = index + direction;\n if ($(this).hasClass('selected')) {\n $(this).removeClass('selected');\n $(this).removeAttr('aria-selected');\n if (suggestionsList.eq(idx).length !== 0) {\n suggestionsList.eq(idx).addClass('selected');\n suggestionsList.eq(idx).attr('aria-selected', true);\n $(this).removeProp('aria-selected');\n $('input.search-field').each(function () {\n $(this).attr('aria-activedescendant', suggestionsList.eq(idx)[0].id);\n });\n } else {\n suggestionsList.first().addClass('selected');\n suggestionsList.first().attr('aria-selected', true);\n $('input.search-field').each(function () {\n $(this).attr('aria-activedescendant', suggestionsList.first()[0].id);\n });\n }\n return false;\n }\n return true;\n });\n }\n}\n\nmodule.exports = function () {\n $('form[name=\"simpleSearch\"]').submit(function (e) {\n var suggestionsList = $('.suggestions .item');\n if (suggestionsList.filter('.selected').length !== 0) {\n e.preventDefault();\n suggestionsList.filter('.selected').find('a')[0].click();\n }\n });\n\n $('input.search-field').each(function () {\n /**\n * Use debounce to avoid making an Ajax call on every single key press by waiting a few\n * hundred milliseconds before making the request. Without debounce, the user sees the\n * browser blink with every key press.\n */\n var debounceSuggestions = debounce(getSuggestions, 300);\n $(this).on('keyup focus', function (e) {\n // Capture Down/Up Arrow Key Events\n switch (e.which) {\n case DOWN_KEY:\n handleArrow(DIRECTION_DOWN);\n e.preventDefault(); // prevent moving the cursor\n break;\n case UP_KEY:\n handleArrow(DIRECTION_UP);\n e.preventDefault(); // prevent moving the cursor\n break;\n default:\n debounceSuggestions(this, e);\n }\n });\n });\n\n $('body').on('click', function (e) {\n if (!$('.suggestions').has(e.target).length && !$(e.target).hasClass('search-field')) {\n $('.suggestions').hide();\n }\n });\n\n $('body').on('click touchend', '.search-mobile button.fa-close', function (e) {\n e.preventDefault();\n $('.suggestions').hide();\n toggleSuggestionsIcon('search');\n tearDownSuggestions();\n });\n\n $('.site-search .reset-button').on('click', function () {\n $(this).removeClass('d-sm-block');\n });\n};\n","'use strict';\n\nmodule.exports = function () {\n $('.info-icon').on('mouseenter focusin', function () {\n $(this).find('.tooltip').removeClass('d-none');\n });\n\n $('.info-icon').on('mouseleave focusout', function () {\n $(this).find('.tooltip').addClass('d-none');\n });\n};\n","'use strict';\nvar focusHelper = require('../components/focus');\n\n/**\n * Retrieves the relevant pid value\n * @param {jquery} $el - DOM container for a given add to cart button\n * @return {string} - value to be used when adding product to cart\n */\nfunction getPidValue($el) {\n var pid;\n\n if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {\n pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');\n } else if ($('.product-set-detail').length || $('.product-set').length) {\n pid = $($el).closest('.product-detail').find('.product-id').text();\n } else {\n pid = $('.product-detail:not(\".bundle-item\")').data('pid');\n }\n\n return pid;\n}\n\n/**\n * Retrieve contextual quantity selector\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {jquery} - quantity selector DOM container\n */\nfunction getQuantitySelector($el) {\n var quantitySelected;\n if ($el && $('.set-items').length) {\n quantitySelected = $($el).closest('.product-detail').find('.quantity-select');\n } else if ($el && $('.product-bundle').length) {\n var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select');\n var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select');\n if (quantitySelectedModal.val() === undefined) {\n quantitySelected = quantitySelectedPDP;\n } else {\n quantitySelected = quantitySelectedModal;\n }\n } else {\n quantitySelected = $('.quantity-select');\n }\n return quantitySelected;\n}\n\n/**\n * Retrieves the value associated with the Quantity pull-down menu\n * @param {jquery} $el - DOM container for the relevant quantity\n * @return {string} - value found in the quantity input\n */\nfunction getQuantitySelected($el) {\n return getQuantitySelector($el).val();\n}\n\n/**\n * Process the attribute values for an attribute that has image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction processSwatchValues(attr, $productContainer, msgs) {\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer.find('[data-attr=\"' + attr.id + '\"] [data-attr-value=\"' +\n attrValue.value + '\"]');\n var $swatchButton = $attrValue.parent();\n\n if (attrValue.selected) {\n $attrValue.addClass('selected');\n $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);\n } else {\n $attrValue.removeClass('selected');\n $attrValue.siblings('.selected-assistive-text').empty();\n }\n\n if (attrValue.url) {\n $swatchButton.attr('data-url', attrValue.url);\n } else {\n $swatchButton.removeAttr('data-url');\n }\n\n // Disable if not selectable\n $attrValue.removeClass('selectable unselectable');\n\n $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');\n });\n}\n\n/**\n * Process attribute values associated with an attribute that does not have image swatches\n *\n * @param {Object} attr - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {Object[]} attr.values - Array of attribute value objects\n * @param {string} attr.values.value - Attribute coded value\n * @param {string} attr.values.url - URL to de/select an attribute value of the product\n * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be\n * selected. If there is no variant that corresponds to a specific combination of attribute\n * values, an attribute may be disabled in the Product Detail Page\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction processNonSwatchValues(attr, $productContainer) {\n var $attr = '[data-attr=\"' + attr.id + '\"]';\n var $defaultOption = $productContainer.find($attr + ' .select-' + attr.id + ' option:first');\n $defaultOption.attr('value', attr.resetUrl);\n\n attr.values.forEach(function (attrValue) {\n var $attrValue = $productContainer\n .find($attr + ' [data-attr-value=\"' + attrValue.value + '\"]');\n $attrValue.attr('value', attrValue.url)\n .removeAttr('disabled');\n\n if (!attrValue.selectable) {\n $attrValue.attr('disabled', true);\n }\n });\n}\n\n/**\n * Routes the handling of attribute processing depending on whether the attribute has image\n * swatches or not\n *\n * @param {Object} attrs - Attribute\n * @param {string} attr.id - Attribute ID\n * @param {jQuery} $productContainer - DOM element for a given product\n * @param {Object} msgs - object containing resource messages\n */\nfunction updateAttrs(attrs, $productContainer, msgs) {\n // Currently, the only attribute type that has image swatches is Color.\n var attrsWithSwatches = ['color'];\n\n attrs.forEach(function (attr) {\n if (attrsWithSwatches.indexOf(attr.id) > -1) {\n processSwatchValues(attr, $productContainer, msgs);\n } else {\n processNonSwatchValues(attr, $productContainer);\n }\n });\n}\n\n/**\n * Updates the availability status in the Product Detail Page\n *\n * @param {Object} response - Ajax response object after an\n * attribute value has been [de]selected\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction updateAvailability(response, $productContainer) {\n var availabilityValue = '';\n var availabilityMessages = response.product.availability.messages;\n if (!response.product.readyToOrder) {\n availabilityValue = '<li><div>' + response.resources.info_selectforstock + '</div></li>';\n } else {\n availabilityMessages.forEach(function (message) {\n availabilityValue += '<li><div>' + message + '</div></li>';\n });\n }\n\n $($productContainer).trigger('product:updateAvailability', {\n product: response.product,\n $productContainer: $productContainer,\n message: availabilityValue,\n resources: response.resources\n });\n}\n\n/**\n * Generates html for product attributes section\n *\n * @param {array} attributes - list of attributes\n * @return {string} - Compiled HTML\n */\nfunction getAttributesHtml(attributes) {\n if (!attributes) {\n return '';\n }\n\n var html = '';\n\n attributes.forEach(function (attributeGroup) {\n if (attributeGroup.ID === 'mainAttributes') {\n attributeGroup.attributes.forEach(function (attribute) {\n html += '<div class=\"attribute-values\">' + attribute.label + ': '\n + attribute.value + '</div>';\n });\n }\n });\n\n return html;\n}\n\n/**\n * @typedef UpdatedOptionValue\n * @type Object\n * @property {string} id - Option value ID for look up\n * @property {string} url - Updated option value selection URL\n */\n\n/**\n * @typedef OptionSelectionResponse\n * @type Object\n * @property {string} priceHtml - Updated price HTML code\n * @property {Object} options - Updated Options\n * @property {string} options.id - Option ID\n * @property {UpdatedOptionValue[]} options.values - Option values\n */\n\n/**\n * Updates DOM using post-option selection Ajax response\n *\n * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction updateOptions(optionsHtml, $productContainer) {\n\t// Update options\n $productContainer.find('.product-options').empty().html(optionsHtml);\n}\n\n/**\n * Dynamically creates Bootstrap carousel from response containing images\n * @param {Object[]} imgs - Array of large product images,along with related information\n * @param {jQuery} $productContainer - DOM element for a given product\n */\nfunction createCarousel(imgs, $productContainer) {\n var carousel = $productContainer.find('.carousel');\n $(carousel).carousel('dispose');\n var carouselId = $(carousel).attr('id');\n $(carousel).empty().append('<ol class=\"carousel-indicators\"></ol><div class=\"carousel-inner\" role=\"listbox\"></div><a class=\"carousel-control-prev\" href=\"#' + carouselId + '\" role=\"button\" data-slide=\"prev\"><span class=\"fa icon-prev\" aria-hidden=\"true\"></span><span class=\"sr-only\">' + $(carousel).data('prev') + '</span></a><a class=\"carousel-control-next\" href=\"#' + carouselId + '\" role=\"button\" data-slide=\"next\"><span class=\"fa icon-next\" aria-hidden=\"true\"></span><span class=\"sr-only\">' + $(carousel).data('next') + '</span></a>');\n for (var i = 0; i < imgs.length; i++) {\n $('<div class=\"carousel-item\"><img src=\"' + imgs[i].url + '\" class=\"d-block img-fluid\" alt=\"' + imgs[i].alt + ' image number ' + parseInt(imgs[i].index, 10) + '\" title=\"' + imgs[i].title + '\" itemprop=\"image\" /></div>').appendTo($(carousel).find('.carousel-inner'));\n $('<li data-target=\"#' + carouselId + '\" data-slide-to=\"' + i + '\" class=\"\"></li>').appendTo($(carousel).find('.carousel-indicators'));\n }\n $($(carousel).find('.carousel-item')).first().addClass('active');\n $($(carousel).find('.carousel-indicators > li')).first().addClass('active');\n if (imgs.length === 1) {\n $($(carousel).find('.carousel-indicators, a[class^=\"carousel-control-\"]')).detach();\n }\n $(carousel).carousel();\n $($(carousel).find('.carousel-indicators')).attr('aria-hidden', true);\n}\n\n/**\n * Parses JSON from Ajax call made whenever an attribute value is [de]selected\n * @param {Object} response - response from Ajax call\n * @param {Object} response.product - Product object\n * @param {string} response.product.id - Product ID\n * @param {Object[]} response.product.variationAttributes - Product attributes\n * @param {Object[]} response.product.images - Product images\n * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required\n * attributes have been selected. Used partially to\n * determine whether the Add to Cart button can be enabled\n * @param {jQuery} $productContainer - DOM element for a given product.\n */\nfunction handleVariantResponse(response, $productContainer) {\n var isChoiceOfBonusProducts =\n $productContainer.parents('.choose-bonus-product-dialog').length > 0;\n var isVaraint;\n if (response.product.variationAttributes) {\n updateAttrs(response.product.variationAttributes, $productContainer, response.resources);\n isVaraint = response.product.productType === 'variant';\n if (isChoiceOfBonusProducts && isVaraint) {\n $productContainer.parent('.bonus-product-item')\n .data('pid', response.product.id);\n\n $productContainer.parent('.bonus-product-item')\n .data('ready-to-order', response.product.readyToOrder);\n }\n }\n\n // Update primary images\n var primaryImageUrls = response.product.images.large;\n createCarousel(primaryImageUrls, $productContainer);\n\n // Update pricing\n if (!isChoiceOfBonusProducts) {\n var $priceSelector = $('.prices .price', $productContainer).length\n ? $('.prices .price', $productContainer)\n : $('.prices .price');\n $priceSelector.replaceWith(response.product.price.html);\n }\n\n // Update promotions\n $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);\n\n updateAvailability(response, $productContainer);\n\n if (isChoiceOfBonusProducts) {\n var $selectButton = $productContainer.find('.select-bonus-product');\n $selectButton.trigger('bonusproduct:updateSelectButton', {\n product: response.product, $productContainer: $productContainer\n });\n } else {\n // Enable \"Add to Cart\" button if all required attributes have been selected\n $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {\n product: response.product, $productContainer: $productContainer\n }).trigger('product:statusUpdate', response.product);\n }\n\n // Update attributes\n $productContainer.find('.main-attributes').empty()\n .html(getAttributesHtml(response.product.attributes));\n}\n\n/**\n * @typespec UpdatedQuantity\n * @type Object\n * @property {boolean} selected - Whether the quantity has been selected\n * @property {string} value - The number of products to purchase\n * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,\n * etc.\n */\n\n/**\n * Updates the quantity DOM elements post Ajax call\n * @param {UpdatedQuantity[]} quantities -\n * @param {jQuery} $productContainer - DOM container for a given product\n */\nfunction updateQuantities(quantities, $productContainer) {\n if ($productContainer.parent('.bonus-product-item').length <= 0) {\n var optionsHtml = quantities.map(function (quantity) {\n var selected = quantity.selected ? ' selected ' : '';\n return '<option value=\"' + quantity.value + '\" data-url=\"' + quantity.url + '\"' +\n selected + '>' + quantity.value + '</option>';\n }).join('');\n getQuantitySelector($productContainer).empty().html(optionsHtml);\n }\n}\n\n/**\n * updates the product view when a product attribute is selected or deselected or when\n * changing quantity\n * @param {string} selectedValueUrl - the Url for the selected variation value\n * @param {jQuery} $productContainer - DOM element for current product\n */\nfunction attributeSelect(selectedValueUrl, $productContainer) {\n if (selectedValueUrl) {\n $('body').trigger('product:beforeAttributeSelect',\n { url: selectedValueUrl, container: $productContainer });\n\n $.ajax({\n url: selectedValueUrl,\n method: 'GET',\n success: function (data) {\n handleVariantResponse(data, $productContainer);\n updateOptions(data.product.optionsHtml, $productContainer);\n updateQuantities(data.product.quantities, $productContainer);\n $('body').trigger('product:afterAttributeSelect',\n { data: data, container: $productContainer });\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @return {string} - The provided URL to use when adding a product to the cart\n */\nfunction getAddToCartUrl() {\n return $('.add-to-cart-url').val();\n}\n\n/**\n * Parses the html for a modal window\n * @param {string} html - representing the body and footer of the modal window\n *\n * @return {Object} - Object with properties body and footer.\n */\nfunction parseHtml(html) {\n var $html = $('<div>').append($.parseHTML(html));\n\n var body = $html.find('.choice-of-bonus-product');\n var footer = $html.find('.modal-footer').children();\n\n return { body: body, footer: footer };\n}\n\n/**\n * Retrieves url to use when adding a product to the cart\n *\n * @param {Object} data - data object used to fill in dynamic portions of the html\n */\nfunction chooseBonusProducts(data) {\n $('.modal-body').spinner().start();\n\n if ($('#chooseBonusProductModal').length !== 0) {\n $('#chooseBonusProductModal').remove();\n }\n var bonusUrl;\n if (data.bonusChoiceRuleBased) {\n bonusUrl = data.showProductsUrlRuleBased;\n } else {\n bonusUrl = data.showProductsUrlListBased;\n }\n\n var htmlString = '<!-- Modal -->'\n + '<div class=\"modal fade\" id=\"chooseBonusProductModal\" tabindex=\"-1\" role=\"dialog\">'\n + '<span class=\"enter-message sr-only\" ></span>'\n + '<div class=\"modal-dialog choose-bonus-product-dialog\" '\n + 'data-total-qty=\"' + data.maxBonusItems + '\"'\n + 'data-UUID=\"' + data.uuid + '\"'\n + 'data-pliUUID=\"' + data.pliUUID + '\"'\n + 'data-addToCartUrl=\"' + data.addToCartUrl + '\"'\n + 'data-pageStart=\"0\"'\n + 'data-pageSize=\"' + data.pageSize + '\"'\n + 'data-moreURL=\"' + data.showProductsUrlRuleBased + '\"'\n + 'data-bonusChoiceRuleBased=\"' + data.bonusChoiceRuleBased + '\">'\n + '<!-- Modal content-->'\n + '<div class=\"modal-content\">'\n + '<div class=\"modal-header\">'\n + ' <span class=\"\">' + data.labels.selectprods + '</span>'\n + ' <button type=\"button\" class=\"close pull-right\" data-dismiss=\"modal\">'\n + ' <span aria-hidden=\"true\">×</span>'\n + ' <span class=\"sr-only\"> </span>'\n + ' </button>'\n + '</div>'\n + '<div class=\"modal-body\"></div>'\n + '<div class=\"modal-footer\"></div>'\n + '</div>'\n + '</div>'\n + '</div>';\n $('body').append(htmlString);\n $('.modal-body').spinner().start();\n\n $.ajax({\n url: bonusUrl,\n method: 'GET',\n dataType: 'json',\n success: function (response) {\n var parsedHtml = parseHtml(response.renderedTemplate);\n $('#chooseBonusProductModal .modal-body').empty();\n $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);\n $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);\n $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);\n $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);\n $('#chooseBonusProductModal').modal('show');\n $.spinner().stop();\n },\n error: function () {\n $.spinner().stop();\n }\n });\n}\n\n/**\n * Updates the Mini-Cart quantity value after the customer has pressed the \"Add to Cart\" button\n * @param {string} response - ajax response from clicking the add to cart button\n */\nfunction handlePostCartAdd(response) {\n $('.minicart').trigger('count:update', response);\n var messageType = response.error ? 'alert-danger' : 'alert-success';\n // show add to cart toast\n if (response.newBonusDiscountLineItem\n && Object.keys(response.newBonusDiscountLineItem).length !== 0) {\n chooseBonusProducts(response.newBonusDiscountLineItem);\n } else {\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append(\n '<div class=\"add-to-cart-messages\"></div>'\n );\n }\n\n $('.add-to-cart-messages').append(\n '<div class=\"alert ' + messageType + ' add-to-basket-alert text-center\" role=\"alert\">'\n + response.message\n + '</div>'\n );\n\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 5000);\n }\n}\n\n/**\n * Retrieves the bundle product item ID's for the Controller to replace bundle master product\n * items with their selected variants\n *\n * @return {string[]} - List of selected bundle product item ID's\n */\nfunction getChildProducts() {\n var childProducts = [];\n $('.bundle-item').each(function () {\n childProducts.push({\n pid: $(this).find('.product-id').text(),\n quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)\n });\n });\n\n return childProducts.length ? JSON.stringify(childProducts) : [];\n}\n\n/**\n * Retrieve product options\n *\n * @param {jQuery} $productContainer - DOM element for current product\n * @return {string} - Product options and their selected values\n */\nfunction getOptions($productContainer) {\n var options = $productContainer\n .find('.product-option')\n .map(function () {\n var $elOption = $(this).find('.options-select');\n var urlValue = $elOption.val();\n var selectedValueId = $elOption.find('option[value=\"' + urlValue + '\"]')\n .data('value-id');\n return {\n optionId: $(this).data('option-id'),\n selectedValueId: selectedValueId\n };\n }).toArray();\n\n return JSON.stringify(options);\n}\n\n/**\n * Makes a call to the server to report the event of adding an item to the cart\n *\n * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false\n */\nfunction miniCartReportingUrl(url) {\n if (url) {\n $.ajax({\n url: url,\n method: 'GET',\n success: function () {\n // reporting urls hit on the server\n },\n error: function () {\n // no reporting urls hit on the server\n }\n });\n }\n}\n\nmodule.exports = {\n attributeSelect: attributeSelect,\n methods: {\n editBonusProducts: function (data) {\n chooseBonusProducts(data);\n }\n },\n\n focusChooseBonusProductModal: function () {\n $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');\n $('#chooseBonusProductModal .close').focus();\n });\n },\n\n onClosingChooseBonusProductModal: function () {\n $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {\n $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');\n });\n },\n\n trapChooseBonusProductModalFocus: function () {\n $('body').on('keydown', '#chooseBonusProductModal', function (e) {\n var focusParams = {\n event: e,\n containerSelector: '#chooseBonusProductModal',\n firstElementSelector: '.close',\n lastElementSelector: '.add-bonus-products'\n };\n focusHelper.setTabNextFocus(focusParams);\n });\n },\n\n colorAttribute: function () {\n $(document).on('click', '[data-attr=\"color\"] button', function (e) {\n e.preventDefault();\n\n if ($(this).attr('disabled')) {\n return;\n }\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n\n attributeSelect($(this).attr('data-url'), $productContainer);\n });\n },\n\n selectAttribute: function () {\n $(document).on('change', 'select[class*=\"select-\"], .options-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.set-item');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.product-detail');\n }\n attributeSelect(e.currentTarget.value, $productContainer);\n });\n },\n\n availability: function () {\n $(document).on('change', '.quantity-select', function (e) {\n e.preventDefault();\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.modal-content').find('.product-quickview');\n }\n\n if ($('.bundle-items', $productContainer).length === 0) {\n attributeSelect($(e.currentTarget).find('option:selected').data('url'),\n $productContainer);\n }\n });\n },\n\n addToCart: function () {\n $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function () {\n var addToCartUrl;\n var pid;\n var pidsObj;\n var setPids;\n\n $('body').trigger('product:beforeAddToCart', this);\n\n if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {\n setPids = [];\n\n $('.product-detail').each(function () {\n if (!$(this).hasClass('product-set-detail')) {\n setPids.push({\n pid: $(this).find('.product-id').text(),\n qty: $(this).find('.quantity-select').val(),\n options: getOptions($(this))\n });\n }\n });\n pidsObj = JSON.stringify(setPids);\n }\n\n pid = getPidValue($(this));\n\n var $productContainer = $(this).closest('.product-detail');\n if (!$productContainer.length) {\n $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');\n }\n\n addToCartUrl = getAddToCartUrl();\n\n var form = {\n pid: pid,\n pidsObj: pidsObj,\n childProducts: getChildProducts(),\n quantity: getQuantitySelected($(this))\n };\n\n if (!$('.bundle-item').length) {\n form.options = getOptions($productContainer);\n }\n\n $(this).trigger('updateAddToCartFormData', form);\n if (addToCartUrl) {\n $.ajax({\n url: addToCartUrl,\n method: 'POST',\n data: form,\n success: function (data) {\n handlePostCartAdd(data);\n $('body').trigger('product:afterAddToCart', data);\n $.spinner().stop();\n miniCartReportingUrl(data.reportingURL);\n },\n error: function () {\n $.spinner().stop();\n }\n });\n }\n });\n },\n selectBonusProduct: function () {\n $(document).on('click', '.select-bonus-product', function () {\n var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');\n var pid = $(this).data('pid');\n var maxPids = $('.choose-bonus-product-dialog').data('total-qty');\n var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);\n var totalQty = 0;\n $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {\n totalQty += $(this).data('qty');\n });\n totalQty += submittedQty;\n var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');\n var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');\n if (totalQty <= maxPids) {\n var selectedBonusProductHtml = ''\n + '<div class=\"selected-pid row\" '\n + 'data-pid=\"' + pid + '\"'\n + 'data-qty=\"' + submittedQty + '\"'\n + 'data-optionID=\"' + (optionID || '') + '\"'\n + 'data-option-selected-value=\"' + (valueId || '') + '\"'\n + '>'\n + '<div class=\"col-sm-11 col-9 bonus-product-name\" >'\n + $choiceOfBonusProduct.find('.product-name').html()\n + '</div>'\n + '<div class=\"col-1\"><i class=\"fa fa-times\" aria-hidden=\"true\"></i></div>'\n + '</div>'\n ;\n $('#chooseBonusProductModal .selected-bonus-products').append(selectedBonusProductHtml);\n $('.pre-cart-products').html(totalQty);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n } else {\n $('.selected-bonus-products .bonus-summary').addClass('alert-danger');\n }\n });\n },\n removeBonusProduct: function () {\n $(document).on('click', '.selected-pid', function () {\n $(this).remove();\n var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');\n var count = 0;\n if ($selected.length) {\n $selected.each(function () {\n count += parseInt($(this).data('qty'), 10);\n });\n }\n\n $('.pre-cart-products').html(count);\n $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');\n });\n },\n enableBonusProductSelection: function () {\n $('body').on('bonusproduct:updateSelectButton', function (e, response) {\n $('button.select-bonus-product', response.$productContainer).attr('disabled',\n (!response.product.readyToOrder || !response.product.available));\n var pid = response.product.id;\n $('button.select-bonus-product', response.$productContainer).data('pid', pid);\n });\n },\n showMoreBonusProducts: function () {\n $(document).on('click', '.show-more-bonus-products', function () {\n var url = $(this).data('url');\n $('.modal-content').spinner().start();\n $.ajax({\n url: url,\n method: 'GET',\n success: function (html) {\n var parsedHtml = parseHtml(html);\n $('.modal-body').append(parsedHtml.body);\n $('.show-more-bonus-products:first').remove();\n $('.modal-content').spinner().stop();\n },\n error: function () {\n $('.modal-content').spinner().stop();\n }\n });\n });\n },\n addBonusProductsToCart: function () {\n $(document).on('click', '.add-bonus-products', function () {\n var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');\n var queryString = '?pids=';\n var url = $('.choose-bonus-product-dialog').data('addtocarturl');\n var pidsObject = {\n bonusProducts: []\n };\n\n $.each($readyToOrderBonusProducts, function () {\n var qtyOption =\n parseInt($(this)\n .data('qty'), 10);\n\n var option = null;\n if (qtyOption > 0) {\n if ($(this).data('optionid') && $(this).data('option-selected-value')) {\n option = {};\n option.optionId = $(this).data('optionid');\n option.productId = $(this).data('pid');\n option.selectedValueId = $(this).data('option-selected-value');\n }\n pidsObject.bonusProducts.push({\n pid: $(this).data('pid'),\n qty: qtyOption,\n options: [option]\n });\n pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);\n }\n });\n queryString += JSON.stringify(pidsObject);\n queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');\n queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');\n $.spinner().start();\n $.ajax({\n url: url + queryString,\n method: 'POST',\n success: function (data) {\n $.spinner().stop();\n if (data.error) {\n $('#chooseBonusProductModal').modal('hide');\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('<div class=\"add-to-cart-messages\"></div>');\n }\n $('.add-to-cart-messages').append(\n '<div class=\"alert alert-danger add-to-basket-alert text-center\"'\n + ' role=\"alert\">'\n + data.errorMessage + '</div>'\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n }, 3000);\n } else {\n $('.configure-bonus-product-attributes').html(data);\n $('.bonus-products-step2').removeClass('hidden-xl-down');\n $('#chooseBonusProductModal').modal('hide');\n\n if ($('.add-to-cart-messages').length === 0) {\n $('body').append('<div class=\"add-to-cart-messages\"></div>');\n }\n $('.minicart-quantity').html(data.totalQty);\n $('.add-to-cart-messages').append(\n '<div class=\"alert alert-success add-to-basket-alert text-center\"'\n + ' role=\"alert\">'\n + data.msgSuccess + '</div>'\n );\n setTimeout(function () {\n $('.add-to-basket-alert').remove();\n if ($('.cart-page').length) {\n location.reload();\n }\n }, 1500);\n }\n },\n error: function () {\n $.spinner().stop();\n }\n });\n });\n },\n\n getPidValue: getPidValue,\n getQuantitySelected: getQuantitySelected,\n miniCartReportingUrl: miniCartReportingUrl\n};\n","'use strict';\n\nmodule.exports = function (include) {\n if (typeof include === 'function') {\n include();\n } else if (typeof include === 'object') {\n Object.keys(include).forEach(function (key) {\n if (typeof include[key] === 'function') {\n include[key]();\n }\n });\n }\n};\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n}\n\nconst Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n let rootElement = this._element\n if (element) {\n rootElement = this._getRootElement(element)\n }\n\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(transitionDuration)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n)\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Alert._jQueryInterface\n$.fn[NAME].Constructor = Alert\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n}\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\nconst ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true,\n touch : true\n}\n\nconst DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean',\n touch : 'boolean'\n}\n\nconst Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n}\n\nconst Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHSTART : `touchstart${EVENT_KEY}`,\n TOUCHMOVE : `touchmove${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n POINTERDOWN : `pointerdown${EVENT_KEY}`,\n POINTERUP : `pointerup${EVENT_KEY}`,\n DRAG_START : `dragstart${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item',\n POINTER_EVENT : 'pointer-event'\n}\n\nconst Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n ITEM_IMG : '.carousel-item img',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n}\n\nconst PointerType = {\n TOUCH : 'touch',\n PEN : 'pen'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._element = element\n this._indicatorsElement = this._element.querySelector(Selector.INDICATORS)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (this._element.querySelector(Selector.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n // swipe left\n if (direction > 0) {\n this.prev()\n }\n\n // swipe right\n if (direction < 0) {\n this.next()\n }\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n if (!this._touchSupported) {\n return\n }\n\n const start = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchStartX = event.originalEvent.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.originalEvent.touches[0].clientX\n }\n }\n\n const move = (event) => {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n this.touchDeltaX = 0\n } else {\n this.touchDeltaX = event.originalEvent.touches[0].clientX - this.touchStartX\n }\n }\n\n const end = (event) => {\n if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n this.touchDeltaX = event.originalEvent.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())\n if (this._pointerEvent) {\n $(this._element).on(Event.POINTERDOWN, (event) => start(event))\n $(this._element).on(Event.POINTERUP, (event) => end(event))\n\n this._element.classList.add(ClassName.POINTER_EVENT)\n } else {\n $(this._element).on(Event.TOUCHSTART, (event) => start(event))\n $(this._element).on(Event.TOUCHMOVE, (event) => move(event))\n $(this._element).on(Event.TOUCHEND, (event) => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode\n ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM))\n : []\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM))\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE))\n $(indicators)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = this._element.querySelector(Selector.ACTIVE_ITEM)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if ($(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = nextElementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n\n const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(transitionDuration)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE))\n for (let i = 0, len = carousels.length; i < len; i++) {\n const $carousel = $(carousels[i])\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Carousel._jQueryInterface\n$.fn[NAME].Constructor = Carousel\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n}\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n toggle : true,\n parent : ''\n}\n\nconst DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n}\n\nconst Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n}\n\nconst Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n}\n\nconst Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = [].slice.call(document.querySelectorAll(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n\n const toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = Util.getSelectorFromElement(elem)\n const filterElement = [].slice.call(document.querySelectorAll(selector))\n .filter((foundElem) => foundElem === element)\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES))\n .filter((elem) => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === this._config.parent\n }\n\n return elem.classList.contains(ClassName.COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n\n if (selector !== null) {\n const $elem = $([].slice.call(document.querySelectorAll(selector)))\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = document.querySelector(this._config.parent)\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n const children = [].slice.call(parent.querySelectorAll(selector))\n $(children).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? document.querySelector(selector) : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n const selectors = [].slice.call(document.querySelectorAll(selector))\n\n $(selectors).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Collapse._jQueryInterface\n$.fn[NAME].Constructor = Collapse\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n}\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\nconst SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\nconst TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\nconst ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\nconst ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\nconst RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n}\n\nconst Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n}\n\nconst AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n}\n\nconst Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent',\n reference : 'toggle',\n display : 'dynamic'\n}\n\nconst DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)',\n reference : '(string|element)',\n display : 'string'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n }\n\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n show() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || $(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED) || !$(this._menu).hasClass(ClassName.SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n const parent = Dropdown._getParentFromElement(this._element)\n\n $(parent).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n\n if (parent) {\n this._menu = parent.querySelector(Selector.MENU)\n }\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element.parentNode)\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getOffset() {\n const offset = {}\n\n if (typeof this._config.offset === 'function') {\n offset.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets, this._element) || {}\n }\n\n return data\n }\n } else {\n offset.offset = this._config.offset\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n // Disable Popper.js if we have a static display\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE))\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = document.querySelector(selector)\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = parent.querySelector(Selector.DATA_TOGGLE)\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS))\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Dropdown._jQueryInterface\n$.fn[NAME].Constructor = Dropdown\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n}\n\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\nconst ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\nconst Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n}\n\nconst DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n}\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n SCROLLABLE : 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DIALOG : '.modal-dialog',\n MODAL_BODY : '.modal-body',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = element.querySelector(Selector.DIALOG)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach((htmlElement) => $(htmlElement).off(EVENT_KEY))\n\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n $(document).off(Event.FOCUSIN)\n\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n\n if ($(this._dialog).hasClass(ClassName.SCROLLABLE)) {\n this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0\n } else {\n this._element.scrollTop = 0\n }\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n const transitionDuration = Util.getTransitionDurationFromElement(this._dialog)\n\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n this._backdrop.classList.add(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (animate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!animate) {\n callback()\n return\n }\n\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if ($(this._element).hasClass(ClassName.FADE)) {\n const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n const stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT))\n\n // Adjust fixed content padding\n $(fixedContent).each((index, element) => {\n const actualPadding = element.style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(stickyContent).each((index, element) => {\n const actualMargin = element.style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element)\n .data('margin-right', actualMargin)\n .css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $(document.body).css('padding-right')\n $(document.body)\n .data('padding-right', actualPadding)\n .css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n\n $(document.body).addClass(ClassName.OPEN)\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n const fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT))\n $(fixedContent).each((index, element) => {\n const padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n\n // Restore sticky content\n const elements = [].slice.call(document.querySelectorAll(`${Selector.STICKY_CONTENT}`))\n $(elements).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $(document.body).data('padding-right')\n $(document.body).removeData('padding-right')\n document.body.style.paddingRight = padding ? padding : ''\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Default,\n ...$(this).data(),\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Modal._jQueryInterface\n$.fn[NAME].Constructor = Modal\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n}\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Default = {\n offset : 10,\n method : 'auto',\n target : ''\n}\n\nconst DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n}\n\nconst Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n}\n\nconst Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n}\n\nconst OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = [].slice.call(document.querySelectorAll(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = document.querySelector(targetSelector)\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...typeof config === 'object' && config ? config : {}\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n const offsetLength = this._offsets.length\n for (let i = offsetLength; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector\n .split(',')\n .map((selector) => `${selector}[data-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const $link = $([].slice.call(document.querySelectorAll(queries.join(','))))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n // Handle special case when .nav-link is inside .nav-item\n $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n }\n\n $(this._scrollElement).trigger(Event.ACTIVATE, {\n relatedTarget: target\n })\n }\n\n _clear() {\n [].slice.call(document.querySelectorAll(this._selector))\n .filter((node) => node.classList.contains(ClassName.ACTIVE))\n .forEach((node) => node.classList.remove(ClassName.ACTIVE))\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data) {\n data = new ScrollSpy(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(window).on(Event.LOAD_DATA_API, () => {\n const scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY))\n const scrollSpysLength = scrollSpys.length\n\n for (let i = scrollSpysLength; i--;) {\n const $spy = $(scrollSpys[i])\n ScrollSpy._jQueryInterface.call($spy, $spy.data())\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = ScrollSpy._jQueryInterface\n$.fn[NAME].Constructor = ScrollSpy\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return ScrollSpy._jQueryInterface\n}\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\nimport Util from './util'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tab'\nconst VERSION = '4.3.1'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\nconst Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n}\n\nconst ClassName = {\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active',\n DISABLED : 'disabled',\n FADE : 'fade',\n SHOW : 'show'\n}\n\nconst Selector = {\n DROPDOWN : '.dropdown',\n NAV_LIST_GROUP : '.nav, .list-group',\n ACTIVE : '.active',\n ACTIVE_UL : '> li > .active',\n DATA_TOGGLE : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n DROPDOWN_TOGGLE : '.dropdown-toggle',\n DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n show() {\n if (this._element.parentNode &&\n this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n $(this._element).hasClass(ClassName.ACTIVE) ||\n $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n let target\n let previous\n const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n const selector = Util.getSelectorFromElement(this._element)\n\n if (listElement) {\n const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n previous = $.makeArray($(listElement).find(itemSelector))\n previous = previous[previous.length - 1]\n }\n\n const hideEvent = $.Event(Event.HIDE, {\n relatedTarget: this._element\n })\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget: previous\n })\n\n if (previous) {\n $(previous).trigger(hideEvent)\n }\n\n $(this._element).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() ||\n hideEvent.isDefaultPrevented()) {\n return\n }\n\n if (selector) {\n target = document.querySelector(selector)\n }\n\n this._activate(\n this._element,\n listElement\n )\n\n const complete = () => {\n const hiddenEvent = $.Event(Event.HIDDEN, {\n relatedTarget: this._element\n })\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget: previous\n })\n\n $(previous).trigger(hiddenEvent)\n $(this._element).trigger(shownEvent)\n }\n\n if (target) {\n this._activate(target, target.parentNode, complete)\n } else {\n complete()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _activate(element, container, callback) {\n const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL')\n ? $(container).find(Selector.ACTIVE_UL)\n : $(container).children(Selector.ACTIVE)\n\n const active = activeElements[0]\n const isTransitioning = callback && (active && $(active).hasClass(ClassName.FADE))\n const complete = () => this._transitionComplete(\n element,\n active,\n callback\n )\n\n if (active && isTransitioning) {\n const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n $(active)\n .removeClass(ClassName.SHOW)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(transitionDuration)\n } else {\n complete()\n }\n }\n\n _transitionComplete(element, active, callback) {\n if (active) {\n $(active).removeClass(ClassName.ACTIVE)\n\n const dropdownChild = $(active.parentNode).find(\n Selector.DROPDOWN_ACTIVE_CHILD\n )[0]\n\n if (dropdownChild) {\n $(dropdownChild).removeClass(ClassName.ACTIVE)\n }\n\n if (active.getAttribute('role') === 'tab') {\n active.setAttribute('aria-selected', false)\n }\n }\n\n $(element).addClass(ClassName.ACTIVE)\n if (element.getAttribute('role') === 'tab') {\n element.setAttribute('aria-selected', true)\n }\n\n Util.reflow(element)\n\n if (element.classList.contains(ClassName.FADE)) {\n element.classList.add(ClassName.SHOW)\n }\n\n if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n\n if (dropdownElement) {\n const dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE))\n\n $(dropdownToggleList).addClass(ClassName.ACTIVE)\n }\n\n element.setAttribute('aria-expanded', true)\n }\n\n if (callback) {\n callback()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n\n if (!data) {\n data = new Tab(this)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n$(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n Tab._jQueryInterface.call($(this), 'show')\n })\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n$.fn[NAME] = Tab._jQueryInterface\n$.fn[NAME].Constructor = Tab\n$.fn[NAME].noConflict = () => {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tab._jQueryInterface\n}\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.3.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport $ from 'jquery'\n\n/**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\nconst TRANSITION_END = 'transitionend'\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nfunction toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\nfunction getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n}\n\nfunction transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n}\n\nfunction setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n\n if (!selector || selector === '#') {\n const hrefAttr = element.getAttribute('href')\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''\n }\n\n try {\n return document.querySelector(selector) ? selector : null\n } catch (err) {\n return null\n }\n },\n\n getTransitionDurationFromElement(element) {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let transitionDuration = $(element).css('transition-duration')\n let transitionDelay = $(element).css('transition-delay')\n\n const floatTransitionDuration = parseFloat(transitionDuration)\n const floatTransitionDelay = parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END)\n },\n\n // TODO: Remove in v5\n supportsTransitionEnd() {\n return Boolean(TRANSITION_END)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n },\n\n findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return Util.findShadowRoot(element.parentNode)\n }\n}\n\nsetTransitionEndSupport()\n\nexport default Util\n","/*!\n * jQuery JavaScript Library v3.6.3\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-12-20T21:28Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\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\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof 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\n\nvar\n\tversion = \"3.6.3\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.9\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2022-12-19\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// `qSA` may not throw for unrecognized parts using forgiving parsing:\n\t\t\t\t\t// https://drafts.csswg.org/selectors/#forgiving-selector\n\t\t\t\t\t// like the `:has()` pseudo-class:\n\t\t\t\t\t// https://drafts.csswg.org/selectors/#relational\n\t\t\t\t\t// `CSS.supports` is still expected to return `false` then:\n\t\t\t\t\t// https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn\n\t\t\t\t\t// https://drafts.csswg.org/css-conditional-4/#dfn-support-selector\n\t\t\t\t\tif ( support.cssSupportsSelector &&\n\n\t\t\t\t\t\t// eslint-disable-next-line no-undef\n\t\t\t\t\t\t!CSS.supports( \"selector(:is(\" + newSelector + \"))\" ) ) {\n\n\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t// Throw to get to the same code path as an error directly in qSA.\n\t\t\t\t\t\t// Note: once we only support browser supporting\n\t\t\t\t\t\t// `CSS.supports('selector(...)')`, we can most likely drop\n\t\t\t\t\t\t// the `try-catch`. IE doesn't implement the API.\n\t\t\t\t\t\tthrow new Error();\n\t\t\t\t\t}\n\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$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 */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\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 */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t// Support: Chrome 105+, Firefox 104+, Safari 15.4+\n\t// Make sure forgiving mode is not used in `CSS.supports( \"selector(...)\" )`.\n\t//\n\t// `:is()` uses a forgiving selector list as an argument and is widely\n\t// implemented, so it's a good one to test against.\n\tsupport.cssSupportsSelector = assert( function() {\n\t\t/* eslint-disable no-undef */\n\n\t\treturn CSS.supports( \"selector(*)\" ) &&\n\n\t\t\t// Support: Firefox 78-81 only\n\t\t\t// In old Firefox, `:is()` didn't use forgiving parsing. In that case,\n\t\t\t// fail this test as there's no selector to test against that.\n\t\t\t// `CSS.supports` uses unforgiving parsing\n\t\t\tdocument.querySelectorAll( \":is(:jqfake)\" ) &&\n\n\t\t\t// `*` is needed as Safari & newer Chrome implemented something in between\n\t\t\t// for `:has()` - it throws in `qSA` if it only contains an unsupported\n\t\t\t// argument but multiple ones, one of which is supported, are fine.\n\t\t\t// We want to play safe in case `:is()` gets the same treatment.\n\t\t\t!CSS.supports( \"selector(:is(*,:jqfake))\" );\n\n\t\t/* eslint-enable */\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\tif ( !support.cssSupportsSelector ) {\n\n\t\t// Support: Chrome 105+, Safari 15.4+\n\t\t// `:has()` uses a forgiving selector list as an argument so our regular\n\t\t// `try-catch` mechanism fails to catch `:has()` with arguments not supported\n\t\t// natively like `:has(:contains(\"Foo\"))`. Where supported & spec-compliant,\n\t\t// we now use `CSS.supports(\"selector(:is(SELECTOR_TO_BE_TESTED))\")`, but\n\t\t// outside that we mark `:has` as buggy.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\n\t\t\t// Support: IE <9 only\n\t\t\t// IE doesn't have `contains` on `document` so we need to check for\n\t\t\t// `documentElement` presence.\n\t\t\t// We need to fall back to `a` when `documentElement` is missing\n\t\t\t// as `ownerDocument` of elements within `<template/>` may have\n\t\t\t// a null one - a default behavior of all modern browsers.\n\t\t\tvar adown = a.nodeType === 9 && a.documentElement || a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn 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 */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.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\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\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\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn 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)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\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\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\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 */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\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.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ 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\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\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).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\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\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\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\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn 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\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn 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 */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\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\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\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\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\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\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\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.\nvar 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\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\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\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn 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)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.<br />\n * It will read the variation of the `placement` property.<br />\n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.<br />\n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.<br />\n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.<br />\n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.<br />\n * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overridden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.<br />\n * By default, it is set to no-op.<br />\n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\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;(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 }\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 }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\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\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\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, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, 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\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\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\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\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\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\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\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\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\n name = parts[1];\n\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, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\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\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, 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) ||\n hasProp(waiting, depName) ||\n 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\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\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 &&\n 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\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\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\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\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\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\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\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\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\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\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\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\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\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\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 &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\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\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\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\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() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\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\n Utils.__cache[id][name] = value;\n };\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 return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\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\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '<li role=\"alert\" aria-live=\"assertive\"' +\n ' class=\"select2-results__option\"></li>'\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\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\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\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\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\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\n if ((item.element != null && item.element.selected) ||\n (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 };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\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\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\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\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('<ul></ul>', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\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\n self.setClasses();\n self.ensureHighlightVisible();\n });\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\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\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\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\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\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\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\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\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\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\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\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\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\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\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\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], 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\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '<span class=\"select2-selection\" role=\"combobox\" ' +\n ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n '</span>'\n );\n\n this._tabindex = 0;\n\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\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\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\n self._attachCloseHandler(container);\n });\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\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\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 (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\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\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single');\n\n $selection.html(\n '<span class=\"select2-selection__rendered\"></span>' +\n '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n '<b role=\"presentation\"></b>' +\n '</span>'\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\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\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('<span></span>');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n\n $selection.html(\n '<ul class=\"select2-selection__rendered\"></ul>'\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n\n this.$selection.on(\n 'keydown',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n }\n );\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\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '<li class=\"select2-selection__choice\">' +\n '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n 'tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>' +\n '<span class=\"select2-selection__choice__display\"></span>' +\n '</li>'\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\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\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\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\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\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>'\n );\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\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '<span class=\"select2-search select2-search--inline\">' +\n '<textarea class=\"select2-search__field\"'+\n ' type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n '</textarea>' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\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\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\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 this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection\n .find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\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(\n 'input.searchcheck',\n '.select2-search--inline',\n 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 );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n 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\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\n self.handleSearch(evt);\n }\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\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\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\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\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\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\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], 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\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\n );\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\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\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\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\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\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\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\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\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\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\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\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\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\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\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\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\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(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\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 &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\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\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\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\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\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\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\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\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\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\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\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\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\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n 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\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '<span class=\"select2-dropdown\">' +\n '<span class=\"select2-results\"></span>' +\n '</span>'\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery'\n], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '<span class=\"select2-search select2-search--dropdown\">' +\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\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\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\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\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\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\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\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\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '<li ' +\n 'class=\"select2-results__option select2-results__option--load-more\"' +\n 'role=\"option\" aria-disabled=\"true\"></li>'\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\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\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('<span></span>');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\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\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n 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\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\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\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\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\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\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\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\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\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\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n});\n\nS2.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\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\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\n if (args.maximum != 1) {\n message += 's';\n }\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\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n DropdownCSS, TagsSearchHighlight,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\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\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\n );\n }\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\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\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(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\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\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\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\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\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\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\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\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\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\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\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\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\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(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'jquery',\n './defaults',\n './utils'\n], function ($, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\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\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\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\n var dataset = {};\n\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\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\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\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\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], 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\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\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\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\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\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\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\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\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\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\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\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\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\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\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\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\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\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\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\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\n return false;\n };\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\n if (args === undefined) {\n args = {};\n }\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\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\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\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\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\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\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\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '<span class=\"select2 select2-container\">' +\n '<span class=\"selection\"></span>' +\n '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n '</span>'\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container[0].classList\n .add('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\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\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\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}));\n","/*\n _ _ _ _\n ___| (_) ___| | __ (_)___\n/ __| | |/ __| |/ / | / __|\n\\__ \\ | | (__| < _ | \\__ \\\n|___/_|_|\\___|_|\\_(_)/ |___/\n |__/\n\n Version: 1.8.1\n Author: Ken Wheeler\n Website: http://kenwheeler.github.io\n Docs: http://kenwheeler.github.io/slick\n Repo: http://github.com/kenwheeler/slick\n Issues: http://github.com/kenwheeler/slick/issues\n\n */\n/* global window, document, define, jQuery, setInterval, clearInterval */\n;(function(factory) {\n 'use strict';\n if (typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (typeof exports !== 'undefined') {\n module.exports = factory(require('jquery'));\n } else {\n factory(jQuery);\n }\n\n}(function($) {\n 'use strict';\n\n // Before we do anything: One-fits-all solution to bind passive event listeners, if possible, to improve performance\n jQuery.event.special.touchstart = {\n setup: function(_, ns, handle) {\n this.addEventListener('touchstart', handle, {passive: (ns.includes('noPreventDefault') ? true : false)});\n }\n };\n\n jQuery.event.special.touchmove = {\n setup: function(_, ns, handle) {\n this.addEventListener('touchmove', handle, {passive: (ns.includes('noPreventDefault') ? true : false)});\n }\n };\n\n var Slick = window.Slick || {};\n\n Slick = (function() {\n\n var instanceUid = 0;\n\n function Slick(element, settings) {\n\n var _ = this, dataSettings;\n\n _.defaults = {\n accessibility: true,\n adaptiveHeight: false,\n appendArrows: $(element),\n appendDots: $(element),\n arrows: true,\n asNavFor: null,\n prevArrow: '<button class=\"slick-prev\" aria-label=\"Previous\" type=\"button\">Previous</button>',\n nextArrow: '<button class=\"slick-next\" aria-label=\"Next\" type=\"button\">Next</button>',\n autoplay: false,\n autoplaySpeed: 3000,\n centerMode: false,\n centerPadding: '50px',\n cssEase: 'ease',\n customPaging: function(slider, i) {\n return $('<button type=\"button\" />').text(i + 1);\n },\n dots: false,\n dotsClass: 'slick-dots',\n draggable: true,\n easing: 'linear',\n edgeFriction: 0.35,\n fade: false,\n focusOnSelect: false,\n focusOnChange: false,\n infinite: true,\n initialSlide: 0,\n lazyLoad: 'ondemand',\n mobileFirst: false,\n pauseOnHover: true,\n pauseOnFocus: true,\n pauseOnDotsHover: false,\n respondTo: 'window',\n responsive: null,\n rows: 1,\n rtl: false,\n slide: '',\n slidesPerRow: 1,\n slidesToShow: 1,\n slidesToScroll: 1,\n speed: 500,\n swipe: true,\n swipeToSlide: false,\n touchMove: true,\n touchThreshold: 5,\n useCSS: true,\n useTransform: true,\n variableWidth: false,\n vertical: false,\n verticalSwiping: false,\n waitForAnimate: true,\n zIndex: 1000\n };\n\n _.initials = {\n animating: false,\n dragging: false,\n autoPlayTimer: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n $dots: null,\n listWidth: null,\n listHeight: null,\n loadIndex: 0,\n $nextArrow: null,\n $prevArrow: null,\n scrolling: false,\n slideCount: null,\n slideWidth: null,\n $slideTrack: null,\n $slides: null,\n sliding: false,\n slideOffset: 0,\n swipeLeft: null,\n swiping: false,\n $list: null,\n touchObject: {},\n transformsEnabled: false,\n unslicked: false\n };\n\n $.extend(_, _.initials);\n\n _.activeBreakpoint = null;\n _.animType = null;\n _.animProp = null;\n _.breakpoints = [];\n _.breakpointSettings = [];\n _.cssTransitions = false;\n _.focussed = false;\n _.interrupted = false;\n _.hidden = 'hidden';\n _.paused = true;\n _.positionProp = null;\n _.respondTo = null;\n _.rowCount = 1;\n _.shouldClick = true;\n _.$slider = $(element);\n _.$slidesCache = null;\n _.transformType = null;\n _.transitionType = null;\n _.visibilityChange = 'visibilitychange';\n _.windowWidth = 0;\n _.windowTimer = null;\n\n dataSettings = $(element).data('slick') || {};\n\n _.options = $.extend({}, _.defaults, settings, dataSettings);\n\n _.currentSlide = _.options.initialSlide;\n\n _.originalSettings = _.options;\n\n if (typeof document.mozHidden !== 'undefined') {\n _.hidden = 'mozHidden';\n _.visibilityChange = 'mozvisibilitychange';\n } else if (typeof document.webkitHidden !== 'undefined') {\n _.hidden = 'webkitHidden';\n _.visibilityChange = 'webkitvisibilitychange';\n }\n\n _.autoPlay = $.proxy(_.autoPlay, _);\n _.autoPlayClear = $.proxy(_.autoPlayClear, _);\n _.autoPlayIterator = $.proxy(_.autoPlayIterator, _);\n _.changeSlide = $.proxy(_.changeSlide, _);\n _.clickHandler = $.proxy(_.clickHandler, _);\n _.selectHandler = $.proxy(_.selectHandler, _);\n _.setPosition = $.proxy(_.setPosition, _);\n _.swipeHandler = $.proxy(_.swipeHandler, _);\n _.dragHandler = $.proxy(_.dragHandler, _);\n _.keyHandler = $.proxy(_.keyHandler, _);\n\n _.instanceUid = instanceUid++;\n\n // A simple way to check for HTML strings\n // Strict HTML recognition (must start with <)\n // Extracted from jQuery v1.11 source\n _.htmlExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*)$/;\n\n\n _.registerBreakpoints();\n _.init(true);\n\n }\n\n return Slick;\n\n }());\n\n Slick.prototype.activateADA = function() {\n var _ = this;\n\n _.$slideTrack.find('.slick-active').attr({\n 'aria-hidden': 'false'\n }).find('a, input, button, select').attr({\n 'tabindex': '0'\n });\n\n };\n\n Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n addBefore = index;\n index = null;\n } else if (index < 0 || (index >= _.slideCount)) {\n return false;\n }\n\n _.unload();\n\n if (typeof(index) === 'number') {\n if (index === 0 && _.$slides.length === 0) {\n $(markup).appendTo(_.$slideTrack);\n } else if (addBefore) {\n $(markup).insertBefore(_.$slides.eq(index));\n } else {\n $(markup).insertAfter(_.$slides.eq(index));\n }\n } else {\n if (addBefore === true) {\n $(markup).prependTo(_.$slideTrack);\n } else {\n $(markup).appendTo(_.$slideTrack);\n }\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slides.each(function(index, element) {\n $(element).attr('data-slick-index', index);\n });\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.animateHeight = function() {\n var _ = this;\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.animate({\n height: targetHeight\n }, _.options.speed);\n }\n };\n\n Slick.prototype.animateSlide = function(targetLeft, callback) {\n\n var animProps = {},\n _ = this;\n\n _.animateHeight();\n\n if (_.options.rtl === true && _.options.vertical === false) {\n targetLeft = -targetLeft;\n }\n if (_.transformsEnabled === false) {\n if (_.options.vertical === false) {\n _.$slideTrack.animate({\n left: targetLeft\n }, _.options.speed, _.options.easing, callback);\n } else {\n _.$slideTrack.animate({\n top: targetLeft\n }, _.options.speed, _.options.easing, callback);\n }\n\n } else {\n\n if (_.cssTransitions === false) {\n if (_.options.rtl === true) {\n _.currentLeft = -(_.currentLeft);\n }\n $({\n animStart: _.currentLeft\n }).animate({\n animStart: targetLeft\n }, {\n duration: _.options.speed,\n easing: _.options.easing,\n step: function(now) {\n now = Math.ceil(now);\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate(' +\n now + 'px, 0px)';\n _.$slideTrack.css(animProps);\n } else {\n animProps[_.animType] = 'translate(0px,' +\n now + 'px)';\n _.$slideTrack.css(animProps);\n }\n },\n complete: function() {\n if (callback) {\n callback.call();\n }\n }\n });\n\n } else {\n\n _.applyTransition();\n targetLeft = Math.ceil(targetLeft);\n\n if (_.options.vertical === false) {\n animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)';\n } else {\n animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)';\n }\n _.$slideTrack.css(animProps);\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition();\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n }\n\n };\n\n Slick.prototype.getNavTarget = function() {\n\n var _ = this,\n asNavFor = _.options.asNavFor;\n\n if ( asNavFor && asNavFor !== null ) {\n asNavFor = $(asNavFor).not(_.$slider);\n }\n\n return asNavFor;\n\n };\n\n Slick.prototype.asNavFor = function(index) {\n\n var _ = this,\n asNavFor = _.getNavTarget();\n\n if ( asNavFor !== null && typeof asNavFor === 'object' ) {\n asNavFor.each(function() {\n var target = $(this).slick('getSlick');\n if(!target.unslicked) {\n target.slideHandler(index, true);\n }\n });\n }\n\n };\n\n Slick.prototype.applyTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n if (_.options.fade === false) {\n transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase;\n } else {\n transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase;\n }\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.autoPlay = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n\n if ( _.slideCount > _.options.slidesToShow ) {\n _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed );\n }\n\n };\n\n Slick.prototype.autoPlayClear = function() {\n\n var _ = this;\n\n if (_.autoPlayTimer) {\n clearInterval(_.autoPlayTimer);\n }\n\n };\n\n Slick.prototype.autoPlayIterator = function() {\n\n var _ = this,\n slideTo = _.currentSlide + _.options.slidesToScroll;\n\n if ( !_.paused && !_.interrupted && !_.focussed ) {\n\n if ( _.options.infinite === false ) {\n\n if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) {\n _.direction = 0;\n }\n\n else if ( _.direction === 0 ) {\n\n slideTo = _.currentSlide - _.options.slidesToScroll;\n\n if ( _.currentSlide - 1 === 0 ) {\n _.direction = 1;\n }\n\n }\n\n }\n\n _.slideHandler( slideTo );\n\n }\n\n };\n\n Slick.prototype.buildArrows = function() {\n\n var _ = this;\n\n if (_.options.arrows === true ) {\n\n _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow');\n _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow');\n\n if( _.slideCount > _.options.slidesToShow ) {\n\n _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex');\n\n if (_.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.prependTo(_.options.appendArrows);\n }\n\n if (_.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.appendTo(_.options.appendArrows);\n }\n\n if (_.options.infinite !== true) {\n _.$prevArrow\n .addClass('slick-disabled')\n .attr('aria-disabled', 'true');\n }\n\n } else {\n\n _.$prevArrow.add( _.$nextArrow )\n\n .addClass('slick-hidden')\n .attr({\n 'aria-disabled': 'true',\n 'tabindex': '-1'\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.buildDots = function() {\n\n var _ = this,\n i, dot;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$slider.addClass('slick-dotted');\n\n dot = $('<ul />').addClass(_.options.dotsClass);\n\n for (i = 0; i <= _.getDotCount(); i += 1) {\n dot.append($('<li />').append(_.options.customPaging.call(this, _, i)));\n }\n\n _.$dots = dot.appendTo(_.options.appendDots);\n\n _.$dots.find('li').first().addClass('slick-active');\n\n }\n\n };\n\n Slick.prototype.buildOut = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slider\n .children( _.options.slide + ':not(.slick-cloned)')\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n _.$slides.each(function(index, element) {\n $(element)\n .attr('data-slick-index', index)\n .data('originalStyling', $(element).attr('style') || '');\n });\n\n _.$slider.addClass('slick-slider');\n\n _.$slideTrack = (_.slideCount === 0) ?\n $('<div class=\"slick-track\"/>').appendTo(_.$slider) :\n _.$slides.wrapAll('<div class=\"slick-track\"/>').parent();\n\n _.$list = _.$slideTrack.wrap(\n '<div class=\"slick-list\"/>').parent();\n _.$slideTrack.css('opacity', 0);\n\n if (_.options.centerMode === true || _.options.swipeToSlide === true) {\n _.options.slidesToScroll = 1;\n }\n\n $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading');\n\n _.setupInfinite();\n\n _.buildArrows();\n\n _.buildDots();\n\n _.updateDots();\n\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n if (_.options.draggable === true) {\n _.$list.addClass('draggable');\n }\n\n };\n\n Slick.prototype.buildRows = function() {\n\n var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection;\n\n newSlides = document.createDocumentFragment();\n originalSlides = _.$slider.children();\n\n if(_.options.rows > 0) {\n\n slidesPerSection = _.options.slidesPerRow * _.options.rows;\n numOfSlides = Math.ceil(\n originalSlides.length / slidesPerSection\n );\n\n for(a = 0; a < numOfSlides; a++){\n var slide = document.createElement('div');\n for(b = 0; b < _.options.rows; b++) {\n var row = document.createElement('div');\n for(c = 0; c < _.options.slidesPerRow; c++) {\n var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c));\n if (originalSlides.get(target)) {\n row.appendChild(originalSlides.get(target));\n }\n }\n slide.appendChild(row);\n }\n newSlides.appendChild(slide);\n }\n\n _.$slider.empty().append(newSlides);\n _.$slider.children().children().children()\n .css({\n 'width':(100 / _.options.slidesPerRow) + '%',\n 'display': 'inline-block'\n });\n\n }\n\n };\n\n Slick.prototype.checkResponsive = function(initial, forceUpdate) {\n\n var _ = this,\n breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false;\n var sliderWidth = _.$slider.width();\n var windowWidth = window.innerWidth || $(window).width();\n\n if (_.respondTo === 'window') {\n respondToWidth = windowWidth;\n } else if (_.respondTo === 'slider') {\n respondToWidth = sliderWidth;\n } else if (_.respondTo === 'min') {\n respondToWidth = Math.min(windowWidth, sliderWidth);\n }\n\n if ( _.options.responsive &&\n _.options.responsive.length &&\n _.options.responsive !== null) {\n\n targetBreakpoint = null;\n\n for (breakpoint in _.breakpoints) {\n if (_.breakpoints.hasOwnProperty(breakpoint)) {\n if (_.originalSettings.mobileFirst === false) {\n if (respondToWidth < _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n } else {\n if (respondToWidth > _.breakpoints[breakpoint]) {\n targetBreakpoint = _.breakpoints[breakpoint];\n }\n }\n }\n }\n\n if (targetBreakpoint !== null) {\n if (_.activeBreakpoint !== null) {\n if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) {\n _.activeBreakpoint =\n targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n _.activeBreakpoint = targetBreakpoint;\n if (_.breakpointSettings[targetBreakpoint] === 'unslick') {\n _.unslick(targetBreakpoint);\n } else {\n _.options = $.extend({}, _.originalSettings,\n _.breakpointSettings[\n targetBreakpoint]);\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n }\n triggerBreakpoint = targetBreakpoint;\n }\n } else {\n if (_.activeBreakpoint !== null) {\n _.activeBreakpoint = null;\n _.options = _.originalSettings;\n if (initial === true) {\n _.currentSlide = _.options.initialSlide;\n }\n _.refresh(initial);\n triggerBreakpoint = targetBreakpoint;\n }\n }\n\n // only trigger breakpoints during an actual break. not on initialize.\n if( !initial && triggerBreakpoint !== false ) {\n _.$slider.trigger('breakpoint', [_, triggerBreakpoint]);\n }\n }\n\n };\n\n Slick.prototype.changeSlide = function(event, dontAnimate) {\n\n var _ = this,\n $target = $(event.currentTarget),\n indexOffset, slideOffset, unevenOffset;\n\n // If target is a link, prevent default action.\n if($target.is('a')) {\n event.preventDefault();\n }\n\n // If target is not the <li> element (ie: a child), find the <li>.\n if(!$target.is('li')) {\n $target = $target.closest('li');\n }\n\n unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0);\n indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll;\n\n switch (event.data.message) {\n\n case 'previous':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate);\n }\n break;\n\n case 'next':\n slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset;\n if (_.slideCount > _.options.slidesToShow) {\n _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate);\n }\n break;\n\n case 'index':\n var index = event.data.index === 0 ? 0 :\n event.data.index || $target.index() * _.options.slidesToScroll;\n\n _.slideHandler(_.checkNavigable(index), false, dontAnimate);\n $target.children().trigger('focus');\n break;\n\n default:\n return;\n }\n\n };\n\n Slick.prototype.checkNavigable = function(index) {\n\n var _ = this,\n navigables, prevNavigable;\n\n navigables = _.getNavigableIndexes();\n prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n\n return index;\n };\n\n Slick.prototype.cleanUpEvents = function() {\n\n var _ = this;\n\n if (_.options.dots && _.$dots !== null) {\n\n $('li', _.$dots)\n .off('click.slick', _.changeSlide)\n .off('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n if (_.options.accessibility === true) {\n _.$dots.off('keydown.slick', _.keyHandler);\n }\n }\n\n _.$slider.off('focus.slick blur.slick');\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide);\n _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler);\n _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler);\n }\n }\n\n _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler);\n _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler);\n _.$list.off('touchend.slick mouseup.slick', _.swipeHandler);\n _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler);\n\n _.$list.off('click.slick', _.clickHandler);\n\n $(document).off(_.visibilityChange, _.visibility);\n\n _.cleanUpSlideEvents();\n\n if (_.options.accessibility === true) {\n _.$list.off('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().off('click.slick', _.selectHandler);\n }\n\n $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange);\n\n $(window).off('resize.slick.slick-' + _.instanceUid, _.resize);\n\n $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault);\n\n $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition);\n\n };\n\n Slick.prototype.cleanUpSlideEvents = function() {\n\n var _ = this;\n\n _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n };\n\n Slick.prototype.cleanUpRows = function() {\n\n var _ = this, originalSlides;\n\n if(_.options.rows > 0) {\n originalSlides = _.$slides.children().children();\n originalSlides.removeAttr('style');\n _.$slider.empty().append(originalSlides);\n }\n\n };\n\n Slick.prototype.clickHandler = function(event) {\n\n var _ = this;\n\n if (_.shouldClick === false) {\n event.stopImmediatePropagation();\n event.stopPropagation();\n event.preventDefault();\n }\n\n };\n\n Slick.prototype.destroy = function(refresh) {\n\n var _ = this;\n\n _.autoPlayClear();\n\n _.touchObject = {};\n\n _.cleanUpEvents();\n\n $('.slick-cloned', _.$slider).detach();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n if ( _.$prevArrow && _.$prevArrow.length ) {\n\n _.$prevArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.prevArrow )) {\n _.$prevArrow.remove();\n }\n }\n\n if ( _.$nextArrow && _.$nextArrow.length ) {\n\n _.$nextArrow\n .removeClass('slick-disabled slick-arrow slick-hidden')\n .removeAttr('aria-hidden aria-disabled tabindex')\n .css('display','');\n\n if ( _.htmlExpr.test( _.options.nextArrow )) {\n _.$nextArrow.remove();\n }\n }\n\n\n if (_.$slides) {\n\n _.$slides\n .removeClass('slick-slide slick-active slick-center slick-visible slick-current')\n .removeAttr('aria-hidden')\n .removeAttr('data-slick-index')\n .each(function(){\n $(this).attr('style', $(this).data('originalStyling'));\n });\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.detach();\n\n _.$list.detach();\n\n _.$slider.append(_.$slides);\n }\n\n _.cleanUpRows();\n\n _.$slider.removeClass('slick-slider');\n _.$slider.removeClass('slick-initialized');\n _.$slider.removeClass('slick-dotted');\n\n _.unslicked = true;\n\n if(!refresh) {\n _.$slider.trigger('destroy', [_]);\n }\n\n };\n\n Slick.prototype.disableTransition = function(slide) {\n\n var _ = this,\n transition = {};\n\n transition[_.transitionType] = '';\n\n if (_.options.fade === false) {\n _.$slideTrack.css(transition);\n } else {\n _.$slides.eq(slide).css(transition);\n }\n\n };\n\n Slick.prototype.fadeSlide = function(slideIndex, callback) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).css({\n zIndex: _.options.zIndex\n });\n\n _.$slides.eq(slideIndex).animate({\n opacity: 1\n }, _.options.speed, _.options.easing, callback);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 1,\n zIndex: _.options.zIndex\n });\n\n if (callback) {\n setTimeout(function() {\n\n _.disableTransition(slideIndex);\n\n callback.call();\n }, _.options.speed);\n }\n\n }\n\n };\n\n Slick.prototype.fadeSlideOut = function(slideIndex) {\n\n var _ = this;\n\n if (_.cssTransitions === false) {\n\n _.$slides.eq(slideIndex).animate({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n }, _.options.speed, _.options.easing);\n\n } else {\n\n _.applyTransition(slideIndex);\n\n _.$slides.eq(slideIndex).css({\n opacity: 0,\n zIndex: _.options.zIndex - 2\n });\n\n }\n\n };\n\n Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) {\n\n var _ = this;\n\n if (filter !== null) {\n\n _.$slidesCache = _.$slides;\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.filter(filter).appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.focusHandler = function() {\n\n var _ = this;\n\n // If any child element receives focus within the slider we need to pause the autoplay\n _.$slider\n .off('focus.slick blur.slick')\n .on(\n 'focus.slick',\n '*',\n function(event) {\n var $sf = $(this);\n\n setTimeout(function() {\n if( _.options.pauseOnFocus ) {\n if ($sf.is(':focus')) {\n _.focussed = true;\n _.autoPlay();\n }\n }\n }, 0);\n }\n ).on(\n 'blur.slick',\n '*',\n function(event) {\n var $sf = $(this);\n\n // When a blur occurs on any elements within the slider we become unfocused\n if( _.options.pauseOnFocus ) {\n _.focussed = false;\n _.autoPlay();\n }\n }\n );\n };\n\n Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() {\n\n var _ = this;\n return _.currentSlide;\n\n };\n\n Slick.prototype.getDotCount = function() {\n\n var _ = this;\n\n var breakPoint = 0;\n var counter = 0;\n var pagerQty = 0;\n\n if (_.options.infinite === true) {\n if (_.slideCount <= _.options.slidesToShow) {\n ++pagerQty;\n } else {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n }\n } else if (_.options.centerMode === true) {\n pagerQty = _.slideCount;\n } else if(!_.options.asNavFor) {\n pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll);\n }else {\n while (breakPoint < _.slideCount) {\n ++pagerQty;\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n }\n\n return pagerQty - 1;\n\n };\n\n Slick.prototype.getLeft = function(slideIndex) {\n\n var _ = this,\n targetLeft,\n verticalHeight,\n verticalOffset = 0,\n targetSlide,\n coef;\n\n _.slideOffset = 0;\n verticalHeight = _.$slides.first().outerHeight(true);\n\n if (_.options.infinite === true) {\n if (_.slideCount > _.options.slidesToShow) {\n _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1;\n coef = -1\n\n if (_.options.vertical === true && _.options.centerMode === true) {\n if (_.options.slidesToShow === 2) {\n coef = -1.5;\n } else if (_.options.slidesToShow === 1) {\n coef = -2\n }\n }\n verticalOffset = (verticalHeight * _.options.slidesToShow) * coef;\n }\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) {\n if (slideIndex > _.slideCount) {\n _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1;\n verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1;\n } else {\n _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1;\n verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1;\n }\n }\n }\n } else {\n if (slideIndex + _.options.slidesToShow > _.slideCount) {\n _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth;\n verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight;\n }\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.slideOffset = 0;\n verticalOffset = 0;\n }\n\n if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) {\n _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2);\n } else if (_.options.centerMode === true && _.options.infinite === true) {\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth;\n } else if (_.options.centerMode === true) {\n _.slideOffset = 0;\n _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2);\n }\n\n if (_.options.vertical === false) {\n targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset;\n } else {\n targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset;\n }\n\n if (_.options.variableWidth === true) {\n\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n if (_.options.centerMode === true) {\n if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex);\n } else {\n targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1);\n }\n\n if (_.options.rtl === true) {\n if (targetSlide[0]) {\n targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1;\n } else {\n targetLeft = 0;\n }\n } else {\n targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0;\n }\n\n targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2;\n }\n }\n\n return targetLeft;\n\n };\n\n Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) {\n\n var _ = this;\n\n return _.options[option];\n\n };\n\n Slick.prototype.getNavigableIndexes = function() {\n\n var _ = this,\n breakPoint = 0,\n counter = 0,\n indexes = [],\n max;\n\n if (_.options.infinite === false) {\n max = _.slideCount;\n } else {\n breakPoint = _.options.slidesToScroll * -1;\n counter = _.options.slidesToScroll * -1;\n max = _.slideCount * 2;\n }\n\n while (breakPoint < max) {\n indexes.push(breakPoint);\n breakPoint = counter + _.options.slidesToScroll;\n counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow;\n }\n\n return indexes;\n\n };\n\n Slick.prototype.getSlick = function() {\n\n return this;\n\n };\n\n Slick.prototype.getSlideCount = function() {\n\n var _ = this,\n slidesTraversed, swipedSlide, swipeTarget, centerOffset;\n\n centerOffset = _.options.centerMode === true ? Math.floor(_.$list.width() / 2) : 0;\n swipeTarget = (_.swipeLeft * -1) + centerOffset;\n\n if (_.options.swipeToSlide === true) {\n\n _.$slideTrack.find('.slick-slide').each(function(index, slide) {\n\n var slideOuterWidth, slideOffset, slideRightBoundary;\n slideOuterWidth = $(slide).outerWidth();\n slideOffset = slide.offsetLeft;\n if (_.options.centerMode !== true) {\n slideOffset += (slideOuterWidth / 2);\n }\n\n slideRightBoundary = slideOffset + (slideOuterWidth);\n\n if (swipeTarget < slideRightBoundary) {\n swipedSlide = slide;\n return false;\n }\n });\n\n slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1;\n\n return slidesTraversed;\n\n } else {\n return _.options.slidesToScroll;\n }\n\n };\n\n Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'index',\n index: parseInt(slide)\n }\n }, dontAnimate);\n\n };\n\n Slick.prototype.init = function(creation) {\n\n var _ = this;\n\n if (!$(_.$slider).hasClass('slick-initialized')) {\n\n $(_.$slider).addClass('slick-initialized');\n\n _.buildRows();\n _.buildOut();\n _.setProps();\n _.startLoad();\n _.loadSlider();\n _.initializeEvents();\n _.updateArrows();\n _.updateDots();\n _.checkResponsive(true);\n _.focusHandler();\n\n }\n\n if (creation) {\n _.$slider.trigger('init', [_]);\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n }\n\n if ( _.options.autoplay ) {\n\n _.paused = false;\n _.autoPlay();\n\n }\n\n };\n\n Slick.prototype.initADA = function() {\n var _ = this,\n numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow),\n tabControlIndexes = _.getNavigableIndexes().filter(function(val) {\n return (val >= 0) && (val < _.slideCount);\n });\n\n _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n }).find('a, input, button, select').attr({\n 'tabindex': '-1'\n });\n\n if (_.$dots !== null) {\n _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) {\n var slideControlIndex = tabControlIndexes.indexOf(i);\n\n $(this).attr({\n 'role': 'tabpanel',\n 'id': 'slick-slide' + _.instanceUid + i,\n 'tabindex': -1\n });\n\n if (slideControlIndex !== -1) {\n var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex\n if ($('#' + ariaButtonControl).length) {\n $(this).attr({\n 'aria-describedby': ariaButtonControl\n });\n }\n }\n });\n\n _.$dots.attr('role', 'tablist').find('li').each(function(i) {\n var mappedSlideIndex = tabControlIndexes[i];\n\n $(this).attr({\n 'role': 'presentation'\n });\n\n $(this).find('button').first().attr({\n 'role': 'tab',\n 'id': 'slick-slide-control' + _.instanceUid + i,\n 'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex,\n 'aria-label': (i + 1) + ' of ' + numDotGroups,\n 'aria-selected': null,\n 'tabindex': '-1'\n });\n\n }).eq(_.currentSlide).find('button').attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n }).end();\n }\n\n for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) {\n if (_.options.focusOnChange) {\n _.$slides.eq(i).attr({'tabindex': '0'});\n } else {\n _.$slides.eq(i).removeAttr('tabindex');\n }\n }\n\n _.activateADA();\n\n };\n\n Slick.prototype.initArrowEvents = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n _.$prevArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'previous'\n }, _.changeSlide);\n _.$nextArrow\n .off('click.slick')\n .on('click.slick', {\n message: 'next'\n }, _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$prevArrow.on('keydown.slick', _.keyHandler);\n _.$nextArrow.on('keydown.slick', _.keyHandler);\n }\n }\n\n };\n\n Slick.prototype.initDotEvents = function() {\n\n var _ = this;\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n $('li', _.$dots).on('click.slick', {\n message: 'index'\n }, _.changeSlide);\n\n if (_.options.accessibility === true) {\n _.$dots.on('keydown.slick', _.keyHandler);\n }\n }\n\n if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) {\n\n $('li', _.$dots)\n .on('mouseenter.slick', $.proxy(_.interrupt, _, true))\n .on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initSlideEvents = function() {\n\n var _ = this;\n\n if ( _.options.pauseOnHover ) {\n\n _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true));\n _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false));\n\n }\n\n };\n\n Slick.prototype.initializeEvents = function() {\n\n var _ = this;\n\n _.initArrowEvents();\n\n _.initDotEvents();\n _.initSlideEvents();\n\n _.$list.on('touchstart.slick mousedown.slick', {\n action: 'start'\n }, _.swipeHandler);\n _.$list.on('touchmove.slick mousemove.slick', {\n action: 'move'\n }, _.swipeHandler);\n _.$list.on('touchend.slick mouseup.slick', {\n action: 'end'\n }, _.swipeHandler);\n _.$list.on('touchcancel.slick mouseleave.slick', {\n action: 'end'\n }, _.swipeHandler);\n\n _.$list.on('click.slick', _.clickHandler);\n\n $(document).on(_.visibilityChange, $.proxy(_.visibility, _));\n\n if (_.options.accessibility === true) {\n _.$list.on('keydown.slick', _.keyHandler);\n }\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _));\n\n $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _));\n\n $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault);\n\n $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition);\n $(_.setPosition);\n\n };\n\n Slick.prototype.initUI = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.show();\n _.$nextArrow.show();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.show();\n\n }\n\n };\n\n Slick.prototype.keyHandler = function(event) {\n\n var _ = this;\n //Dont slide if the cursor is inside the form fields and arrow keys are pressed\n if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) {\n if (event.keyCode === 37 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'next' : 'previous'\n }\n });\n } else if (event.keyCode === 39 && _.options.accessibility === true) {\n _.changeSlide({\n data: {\n message: _.options.rtl === true ? 'previous' : 'next'\n }\n });\n }\n }\n\n };\n\n Slick.prototype.lazyLoad = function() {\n\n var _ = this,\n loadRange, cloneRange, rangeStart, rangeEnd;\n\n function loadImages(imagesScope) {\n\n $('img[data-lazy]', imagesScope).each(function() {\n\n var image = $(this),\n imageSource = $(this).attr('data-lazy'),\n imageSrcSet = $(this).attr('data-srcset'),\n imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'),\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n image\n .animate({ opacity: 0 }, 100, function() {\n\n if (imageSrcSet) {\n image\n .attr('srcset', imageSrcSet );\n\n if (imageSizes) {\n image\n .attr('sizes', imageSizes );\n }\n }\n\n image\n .attr('src', imageSource)\n .animate({ opacity: 1 }, 200, function() {\n image\n .removeAttr('data-lazy data-srcset data-sizes')\n .removeClass('slick-loading');\n });\n _.$slider.trigger('lazyLoaded', [_, image, imageSource]);\n });\n\n };\n\n imageToLoad.onerror = function() {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n };\n\n imageToLoad.src = imageSource;\n\n });\n\n }\n\n if (_.options.centerMode === true) {\n if (_.options.infinite === true) {\n rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1);\n rangeEnd = rangeStart + _.options.slidesToShow + 2;\n } else {\n rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1));\n rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide;\n }\n } else {\n rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide;\n rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow);\n if (_.options.fade === true) {\n if (rangeStart > 0) rangeStart--;\n if (rangeEnd <= _.slideCount) rangeEnd++;\n }\n }\n\n loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd);\n\n if (_.options.lazyLoad === 'anticipated') {\n var prevSlide = rangeStart - 1,\n nextSlide = rangeEnd,\n $slides = _.$slider.find('.slick-slide');\n\n for (var i = 0; i < _.options.slidesToScroll; i++) {\n if (prevSlide < 0) prevSlide = _.slideCount - 1;\n loadRange = loadRange.add($slides.eq(prevSlide));\n loadRange = loadRange.add($slides.eq(nextSlide));\n prevSlide--;\n nextSlide++;\n }\n }\n\n loadImages(loadRange);\n\n if (_.slideCount <= _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-slide');\n loadImages(cloneRange);\n } else\n if (_.currentSlide >= _.slideCount - _.options.slidesToShow) {\n cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow);\n loadImages(cloneRange);\n } else if (_.currentSlide === 0) {\n cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1);\n loadImages(cloneRange);\n }\n\n };\n\n Slick.prototype.loadSlider = function() {\n\n var _ = this;\n\n _.setPosition();\n\n _.$slideTrack.css({\n opacity: 1\n });\n\n _.$slider.removeClass('slick-loading');\n\n _.initUI();\n\n if (_.options.lazyLoad === 'progressive') {\n _.progressiveLazyLoad();\n }\n\n };\n\n Slick.prototype.next = Slick.prototype.slickNext = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'next'\n }\n });\n\n };\n\n Slick.prototype.orientationChange = function() {\n\n var _ = this;\n\n _.checkResponsive();\n _.setPosition();\n\n };\n\n Slick.prototype.pause = Slick.prototype.slickPause = function() {\n\n var _ = this;\n\n _.autoPlayClear();\n _.paused = true;\n\n };\n\n Slick.prototype.play = Slick.prototype.slickPlay = function() {\n\n var _ = this;\n\n _.autoPlay();\n _.options.autoplay = true;\n _.paused = false;\n _.focussed = false;\n _.interrupted = false;\n\n };\n\n Slick.prototype.postSlide = function(index) {\n\n var _ = this;\n\n if( !_.unslicked ) {\n\n _.$slider.trigger('afterChange', [_, index]);\n\n _.animating = false;\n\n if (_.slideCount > _.options.slidesToShow) {\n _.setPosition();\n }\n\n _.swipeLeft = null;\n\n if ( _.options.autoplay ) {\n _.autoPlay();\n }\n\n if (_.options.accessibility === true) {\n _.initADA();\n\n if (_.options.focusOnChange) {\n var $currentSlide = $(_.$slides.get(_.currentSlide));\n $currentSlide.attr('tabindex', 0).focus();\n }\n }\n\n }\n\n };\n\n Slick.prototype.prev = Slick.prototype.slickPrev = function() {\n\n var _ = this;\n\n _.changeSlide({\n data: {\n message: 'previous'\n }\n });\n\n };\n\n Slick.prototype.preventDefault = function(event) {\n\n event.preventDefault();\n\n };\n\n Slick.prototype.progressiveLazyLoad = function( tryCount ) {\n\n tryCount = tryCount || 1;\n\n var _ = this,\n $imgsToLoad = $( 'img[data-lazy]', _.$slider ),\n image,\n imageSource,\n imageSrcSet,\n imageSizes,\n imageToLoad;\n\n if ( $imgsToLoad.length ) {\n\n image = $imgsToLoad.first();\n imageSource = image.attr('data-lazy');\n imageSrcSet = image.attr('data-srcset');\n imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes');\n imageToLoad = document.createElement('img');\n\n imageToLoad.onload = function() {\n\n if (imageSrcSet) {\n image\n .attr('srcset', imageSrcSet );\n\n if (imageSizes) {\n image\n .attr('sizes', imageSizes );\n }\n }\n\n image\n .attr( 'src', imageSource )\n .removeAttr('data-lazy data-srcset data-sizes')\n .removeClass('slick-loading');\n\n if ( _.options.adaptiveHeight === true ) {\n _.setPosition();\n }\n\n _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]);\n _.progressiveLazyLoad();\n\n };\n\n imageToLoad.onerror = function() {\n\n if ( tryCount < 3 ) {\n\n /**\n * try to load the image 3 times,\n * leave a slight delay so we don't get\n * servers blocking the request.\n */\n setTimeout( function() {\n _.progressiveLazyLoad( tryCount + 1 );\n }, 500 );\n\n } else {\n\n image\n .removeAttr( 'data-lazy' )\n .removeClass( 'slick-loading' )\n .addClass( 'slick-lazyload-error' );\n\n _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]);\n\n _.progressiveLazyLoad();\n\n }\n\n };\n\n imageToLoad.src = imageSource;\n\n } else {\n\n _.$slider.trigger('allImagesLoaded', [ _ ]);\n\n }\n\n };\n\n Slick.prototype.refresh = function( initializing ) {\n\n var _ = this, currentSlide, lastVisibleIndex;\n\n lastVisibleIndex = _.slideCount - _.options.slidesToShow;\n\n // in non-infinite sliders, we don't want to go past the\n // last visible index.\n if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) {\n _.currentSlide = lastVisibleIndex;\n }\n\n // if less slides than to show, go to start.\n if ( _.slideCount <= _.options.slidesToShow ) {\n _.currentSlide = 0;\n\n }\n\n currentSlide = _.currentSlide;\n\n _.destroy(true);\n\n $.extend(_, _.initials, { currentSlide: currentSlide });\n\n _.init();\n\n if( !initializing ) {\n\n _.changeSlide({\n data: {\n message: 'index',\n index: currentSlide\n }\n }, false);\n\n }\n\n };\n\n Slick.prototype.registerBreakpoints = function() {\n\n var _ = this, breakpoint, currentBreakpoint, l,\n responsiveSettings = _.options.responsive || null;\n\n if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) {\n\n _.respondTo = _.options.respondTo || 'window';\n\n for ( breakpoint in responsiveSettings ) {\n\n l = _.breakpoints.length-1;\n\n if (responsiveSettings.hasOwnProperty(breakpoint)) {\n currentBreakpoint = responsiveSettings[breakpoint].breakpoint;\n\n // loop through the breakpoints and cut out any existing\n // ones with the same breakpoint number, we don't want dupes.\n while( l >= 0 ) {\n if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) {\n _.breakpoints.splice(l,1);\n }\n l--;\n }\n\n _.breakpoints.push(currentBreakpoint);\n _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings;\n\n }\n\n }\n\n _.breakpoints.sort(function(a, b) {\n return ( _.options.mobileFirst ) ? a-b : b-a;\n });\n\n }\n\n };\n\n Slick.prototype.reinit = function() {\n\n var _ = this;\n\n _.$slides =\n _.$slideTrack\n .children(_.options.slide)\n .addClass('slick-slide');\n\n _.slideCount = _.$slides.length;\n\n if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) {\n _.currentSlide = _.currentSlide - _.options.slidesToScroll;\n }\n\n if (_.slideCount <= _.options.slidesToShow) {\n _.currentSlide = 0;\n }\n\n _.registerBreakpoints();\n\n _.setProps();\n _.setupInfinite();\n _.buildArrows();\n _.updateArrows();\n _.initArrowEvents();\n _.buildDots();\n _.updateDots();\n _.initDotEvents();\n _.cleanUpSlideEvents();\n _.initSlideEvents();\n\n _.checkResponsive(false, true);\n\n if (_.options.focusOnSelect === true) {\n $(_.$slideTrack).children().on('click.slick', _.selectHandler);\n }\n\n _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0);\n\n _.setPosition();\n _.focusHandler();\n\n _.paused = !_.options.autoplay;\n _.autoPlay();\n\n _.$slider.trigger('reInit', [_]);\n\n };\n\n Slick.prototype.resize = function() {\n\n var _ = this;\n\n if ($(window).width() !== _.windowWidth) {\n clearTimeout(_.windowDelay);\n _.windowDelay = window.setTimeout(function() {\n _.windowWidth = $(window).width();\n _.checkResponsive();\n if( !_.unslicked ) { _.setPosition(); }\n }, 50);\n }\n };\n\n Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) {\n\n var _ = this;\n\n if (typeof(index) === 'boolean') {\n removeBefore = index;\n index = removeBefore === true ? 0 : _.slideCount - 1;\n } else {\n index = removeBefore === true ? --index : index;\n }\n\n if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) {\n return false;\n }\n\n _.unload();\n\n if (removeAll === true) {\n _.$slideTrack.children().remove();\n } else {\n _.$slideTrack.children(this.options.slide).eq(index).remove();\n }\n\n _.$slides = _.$slideTrack.children(this.options.slide);\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slideTrack.append(_.$slides);\n\n _.$slidesCache = _.$slides;\n\n _.reinit();\n\n };\n\n Slick.prototype.setCSS = function(position) {\n\n var _ = this,\n positionProps = {},\n x, y;\n\n if (_.options.rtl === true) {\n position = -position;\n }\n x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px';\n y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px';\n\n positionProps[_.positionProp] = position;\n\n if (_.transformsEnabled === false) {\n _.$slideTrack.css(positionProps);\n } else {\n positionProps = {};\n if (_.cssTransitions === false) {\n positionProps[_.animType] = 'translate(' + x + ', ' + y + ')';\n _.$slideTrack.css(positionProps);\n } else {\n positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)';\n _.$slideTrack.css(positionProps);\n }\n }\n\n };\n\n Slick.prototype.setDimensions = function() {\n\n var _ = this;\n\n if (_.options.vertical === false) {\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: ('0px ' + _.options.centerPadding)\n });\n }\n } else {\n _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow);\n if (_.options.centerMode === true) {\n _.$list.css({\n padding: (_.options.centerPadding + ' 0px')\n });\n }\n }\n\n _.listWidth = _.$list.width();\n _.listHeight = _.$list.height();\n\n\n if (_.options.vertical === false && _.options.variableWidth === false) {\n _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow);\n _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length)));\n\n } else if (_.options.variableWidth === true) {\n _.$slideTrack.width(5000 * _.slideCount);\n } else {\n _.slideWidth = Math.ceil(_.listWidth);\n _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length)));\n }\n\n var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width();\n if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset);\n\n };\n\n Slick.prototype.setFade = function() {\n\n var _ = this,\n targetLeft;\n\n _.$slides.each(function(index, element) {\n targetLeft = (_.slideWidth * index) * -1;\n if (_.options.rtl === true) {\n $(element).css({\n position: 'relative',\n right: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n } else {\n $(element).css({\n position: 'relative',\n left: targetLeft,\n top: 0,\n zIndex: _.options.zIndex - 2,\n opacity: 0\n });\n }\n });\n\n _.$slides.eq(_.currentSlide).css({\n zIndex: _.options.zIndex - 1,\n opacity: 1\n });\n\n };\n\n Slick.prototype.setHeight = function() {\n\n var _ = this;\n\n if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) {\n var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true);\n _.$list.css('height', targetHeight);\n }\n\n };\n\n Slick.prototype.setOption =\n Slick.prototype.slickSetOption = function() {\n\n /**\n * accepts arguments in format of:\n *\n * - for changing a single option's value:\n * .slick(\"setOption\", option, value, refresh )\n *\n * - for changing a set of responsive options:\n * .slick(\"setOption\", 'responsive', [{}, ...], refresh )\n *\n * - for updating multiple values at once (not responsive)\n * .slick(\"setOption\", { 'option': value, ... }, refresh )\n */\n\n var _ = this, l, item, option, value, refresh = false, type;\n\n if( $.type( arguments[0] ) === 'object' ) {\n\n option = arguments[0];\n refresh = arguments[1];\n type = 'multiple';\n\n } else if ( $.type( arguments[0] ) === 'string' ) {\n\n option = arguments[0];\n value = arguments[1];\n refresh = arguments[2];\n\n if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) {\n\n type = 'responsive';\n\n } else if ( typeof arguments[1] !== 'undefined' ) {\n\n type = 'single';\n\n }\n\n }\n\n if ( type === 'single' ) {\n\n _.options[option] = value;\n\n\n } else if ( type === 'multiple' ) {\n\n $.each( option , function( opt, val ) {\n\n _.options[opt] = val;\n\n });\n\n\n } else if ( type === 'responsive' ) {\n\n for ( item in value ) {\n\n if( $.type( _.options.responsive ) !== 'array' ) {\n\n _.options.responsive = [ value[item] ];\n\n } else {\n\n l = _.options.responsive.length-1;\n\n // loop through the responsive object and splice out duplicates.\n while( l >= 0 ) {\n\n if( _.options.responsive[l].breakpoint === value[item].breakpoint ) {\n\n _.options.responsive.splice(l,1);\n\n }\n\n l--;\n\n }\n\n _.options.responsive.push( value[item] );\n\n }\n\n }\n\n }\n\n if ( refresh ) {\n\n _.unload();\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.setPosition = function() {\n\n var _ = this;\n\n _.setDimensions();\n\n _.setHeight();\n\n if (_.options.fade === false) {\n _.setCSS(_.getLeft(_.currentSlide));\n } else {\n _.setFade();\n }\n\n _.$slider.trigger('setPosition', [_]);\n\n };\n\n Slick.prototype.setProps = function() {\n\n var _ = this,\n bodyStyle = document.body.style;\n\n _.positionProp = _.options.vertical === true ? 'top' : 'left';\n\n if (_.positionProp === 'top') {\n _.$slider.addClass('slick-vertical');\n } else {\n _.$slider.removeClass('slick-vertical');\n }\n\n if (bodyStyle.WebkitTransition !== undefined ||\n bodyStyle.MozTransition !== undefined ||\n bodyStyle.msTransition !== undefined) {\n if (_.options.useCSS === true) {\n _.cssTransitions = true;\n }\n }\n\n if ( _.options.fade ) {\n if ( typeof _.options.zIndex === 'number' ) {\n if( _.options.zIndex < 3 ) {\n _.options.zIndex = 3;\n }\n } else {\n _.options.zIndex = _.defaults.zIndex;\n }\n }\n\n if (bodyStyle.OTransform !== undefined) {\n _.animType = 'OTransform';\n _.transformType = '-o-transform';\n _.transitionType = 'OTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.MozTransform !== undefined) {\n _.animType = 'MozTransform';\n _.transformType = '-moz-transform';\n _.transitionType = 'MozTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.webkitTransform !== undefined) {\n _.animType = 'webkitTransform';\n _.transformType = '-webkit-transform';\n _.transitionType = 'webkitTransition';\n if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false;\n }\n if (bodyStyle.msTransform !== undefined) {\n _.animType = 'msTransform';\n _.transformType = '-ms-transform';\n _.transitionType = 'msTransition';\n if (bodyStyle.msTransform === undefined) _.animType = false;\n }\n if (bodyStyle.transform !== undefined && _.animType !== false) {\n _.animType = 'transform';\n _.transformType = 'transform';\n _.transitionType = 'transition';\n }\n _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false);\n };\n\n\n Slick.prototype.setSlideClasses = function(index) {\n\n var _ = this,\n centerOffset, allSlides, indexOffset, remainder;\n\n allSlides = _.$slider\n .find('.slick-slide')\n .removeClass('slick-active slick-center slick-current')\n .attr('aria-hidden', 'true');\n\n _.$slides\n .eq(index)\n .addClass('slick-current');\n\n if (_.options.centerMode === true) {\n\n var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0;\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if (_.options.infinite === true) {\n\n if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) {\n _.$slides\n .slice(index - centerOffset + evenCoef, index + centerOffset + 1)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n indexOffset = _.options.slidesToShow + index;\n allSlides\n .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n if (index === 0) {\n\n allSlides\n .eq( _.options.slidesToShow + _.slideCount + 1 )\n .addClass('slick-center');\n\n } else if (index === _.slideCount - 1) {\n\n allSlides\n .eq(_.options.slidesToShow)\n .addClass('slick-center');\n\n }\n\n }\n\n _.$slides\n .eq(index)\n .addClass('slick-center');\n\n } else {\n\n if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) {\n\n _.$slides\n .slice(index, index + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else if (allSlides.length <= _.options.slidesToShow) {\n\n allSlides\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n remainder = _.slideCount % _.options.slidesToShow;\n indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index;\n\n if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) {\n\n allSlides\n .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n } else {\n\n allSlides\n .slice(indexOffset, indexOffset + _.options.slidesToShow)\n .addClass('slick-active')\n .attr('aria-hidden', 'false');\n\n }\n\n }\n\n }\n\n if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') {\n _.lazyLoad();\n }\n };\n\n Slick.prototype.setupInfinite = function() {\n\n var _ = this,\n i, slideIndex, infiniteCount;\n\n if (_.options.fade === true) {\n _.options.centerMode = false;\n }\n\n if (_.options.infinite === true && _.options.fade === false) {\n\n slideIndex = null;\n\n if (_.slideCount > _.options.slidesToShow) {\n\n if (_.options.centerMode === true) {\n infiniteCount = _.options.slidesToShow + 1;\n } else {\n infiniteCount = _.options.slidesToShow;\n }\n\n for (i = _.slideCount; i > (_.slideCount -\n infiniteCount); i -= 1) {\n slideIndex = i - 1;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex - _.slideCount)\n .prependTo(_.$slideTrack).addClass('slick-cloned');\n }\n for (i = 0; i < infiniteCount + _.slideCount; i += 1) {\n slideIndex = i;\n $(_.$slides[slideIndex]).clone(true).attr('id', '')\n .attr('data-slick-index', slideIndex + _.slideCount)\n .appendTo(_.$slideTrack).addClass('slick-cloned');\n }\n _.$slideTrack.find('.slick-cloned').find('[id]').each(function() {\n $(this).attr('id', '');\n });\n\n }\n\n }\n\n };\n\n Slick.prototype.interrupt = function( toggle ) {\n\n var _ = this;\n\n if( !toggle ) {\n _.autoPlay();\n }\n _.interrupted = toggle;\n\n };\n\n Slick.prototype.selectHandler = function(event) {\n\n var _ = this;\n\n var targetElement =\n $(event.target).is('.slick-slide') ?\n $(event.target) :\n $(event.target).parents('.slick-slide');\n\n var index = parseInt(targetElement.attr('data-slick-index'));\n\n if (!index) index = 0;\n\n if (_.slideCount <= _.options.slidesToShow) {\n\n _.slideHandler(index, false, true);\n return;\n\n }\n\n _.slideHandler(index);\n\n };\n\n Slick.prototype.slideHandler = function(index, sync, dontAnimate) {\n\n var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null,\n _ = this, navTarget;\n\n sync = sync || false;\n\n if (_.animating === true && _.options.waitForAnimate === true) {\n return;\n }\n\n if (_.options.fade === true && _.currentSlide === index) {\n return;\n }\n\n if (sync === false) {\n _.asNavFor(index);\n }\n\n targetSlide = index;\n targetLeft = _.getLeft(targetSlide);\n slideLeft = _.getLeft(_.currentSlide);\n\n _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft;\n\n if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) {\n if (_.options.fade === false) {\n targetSlide = _.currentSlide;\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(slideLeft, function() {\n _.postSlide(targetSlide);\n });\n } else {\n _.postSlide(targetSlide);\n }\n }\n return;\n }\n\n if ( _.options.autoplay ) {\n clearInterval(_.autoPlayTimer);\n }\n\n if (targetSlide < 0) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll);\n } else {\n animSlide = _.slideCount + targetSlide;\n }\n } else if (targetSlide >= _.slideCount) {\n if (_.slideCount % _.options.slidesToScroll !== 0) {\n animSlide = 0;\n } else {\n animSlide = targetSlide - _.slideCount;\n }\n } else {\n animSlide = targetSlide;\n }\n\n _.animating = true;\n\n _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]);\n\n oldSlide = _.currentSlide;\n _.currentSlide = animSlide;\n\n _.setSlideClasses(_.currentSlide);\n\n if ( _.options.asNavFor ) {\n\n navTarget = _.getNavTarget();\n navTarget = navTarget.slick('getSlick');\n\n if ( navTarget.slideCount <= navTarget.options.slidesToShow ) {\n navTarget.setSlideClasses(_.currentSlide);\n }\n\n }\n\n _.updateDots();\n _.updateArrows();\n\n if (_.options.fade === true) {\n if (dontAnimate !== true) {\n\n _.fadeSlideOut(oldSlide);\n\n _.fadeSlide(animSlide, function() {\n _.postSlide(animSlide);\n });\n\n } else {\n _.postSlide(animSlide);\n }\n _.animateHeight();\n return;\n }\n\n if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) {\n _.animateSlide(targetLeft, function() {\n _.postSlide(animSlide);\n });\n } else {\n _.postSlide(animSlide);\n }\n\n };\n\n Slick.prototype.startLoad = function() {\n\n var _ = this;\n\n if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) {\n\n _.$prevArrow.hide();\n _.$nextArrow.hide();\n\n }\n\n if (_.options.dots === true && _.slideCount > _.options.slidesToShow) {\n\n _.$dots.hide();\n\n }\n\n _.$slider.addClass('slick-loading');\n\n };\n\n Slick.prototype.swipeDirection = function() {\n\n var xDist, yDist, r, swipeAngle, _ = this;\n\n xDist = _.touchObject.startX - _.touchObject.curX;\n yDist = _.touchObject.startY - _.touchObject.curY;\n r = Math.atan2(yDist, xDist);\n\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n\n if ((swipeAngle <= 45) && (swipeAngle >= 0)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle <= 360) && (swipeAngle >= 315)) {\n return (_.options.rtl === false ? 'left' : 'right');\n }\n if ((swipeAngle >= 135) && (swipeAngle <= 225)) {\n return (_.options.rtl === false ? 'right' : 'left');\n }\n if (_.options.verticalSwiping === true) {\n if ((swipeAngle >= 35) && (swipeAngle <= 135)) {\n return 'down';\n } else {\n return 'up';\n }\n }\n\n return 'vertical';\n\n };\n\n Slick.prototype.swipeEnd = function(event) {\n\n var _ = this,\n slideCount,\n direction;\n\n _.dragging = false;\n _.swiping = false;\n\n if (_.scrolling) {\n _.scrolling = false;\n return false;\n }\n\n _.interrupted = false;\n _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true;\n\n if ( _.touchObject.curX === undefined ) {\n return false;\n }\n\n if ( _.touchObject.edgeHit === true ) {\n _.$slider.trigger('edge', [_, _.swipeDirection() ]);\n }\n\n if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) {\n\n direction = _.swipeDirection();\n\n switch ( direction ) {\n\n case 'left':\n case 'down':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide + _.getSlideCount() ) :\n _.currentSlide + _.getSlideCount();\n\n _.currentDirection = 0;\n\n break;\n\n case 'right':\n case 'up':\n\n slideCount =\n _.options.swipeToSlide ?\n _.checkNavigable( _.currentSlide - _.getSlideCount() ) :\n _.currentSlide - _.getSlideCount();\n\n _.currentDirection = 1;\n\n break;\n\n default:\n\n\n }\n\n if( direction != 'vertical' ) {\n\n _.slideHandler( slideCount );\n _.touchObject = {};\n _.$slider.trigger('swipe', [_, direction ]);\n\n }\n\n } else {\n\n if ( _.touchObject.startX !== _.touchObject.curX ) {\n\n _.slideHandler( _.currentSlide );\n _.touchObject = {};\n\n }\n\n }\n\n };\n\n Slick.prototype.swipeHandler = function(event) {\n\n var _ = this;\n\n if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) {\n return;\n } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) {\n return;\n }\n\n _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ?\n event.originalEvent.touches.length : 1;\n\n _.touchObject.minSwipe = _.listWidth / _.options\n .touchThreshold;\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.minSwipe = _.listHeight / _.options\n .touchThreshold;\n }\n\n switch (event.data.action) {\n\n case 'start':\n _.swipeStart(event);\n break;\n\n case 'move':\n _.swipeMove(event);\n break;\n\n case 'end':\n _.swipeEnd(event);\n break;\n\n }\n\n };\n\n Slick.prototype.swipeMove = function(event) {\n\n var _ = this,\n edgeWasHit = false,\n curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength;\n\n touches = event.originalEvent !== undefined ? event.originalEvent.touches : null;\n\n if (!_.dragging || _.scrolling || touches && touches.length !== 1) {\n return false;\n }\n\n curLeft = _.getLeft(_.currentSlide);\n\n _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX;\n _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY;\n\n _.touchObject.swipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curX - _.touchObject.startX, 2)));\n\n verticalSwipeLength = Math.round(Math.sqrt(\n Math.pow(_.touchObject.curY - _.touchObject.startY, 2)));\n\n if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) {\n _.scrolling = true;\n return false;\n }\n\n if (_.options.verticalSwiping === true) {\n _.touchObject.swipeLength = verticalSwipeLength;\n }\n\n swipeDirection = _.swipeDirection();\n\n if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) {\n _.swiping = true;\n event.preventDefault();\n }\n\n positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1);\n if (_.options.verticalSwiping === true) {\n positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1;\n }\n\n\n swipeLength = _.touchObject.swipeLength;\n\n _.touchObject.edgeHit = false;\n\n if (_.options.infinite === false) {\n if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) {\n swipeLength = _.touchObject.swipeLength * _.options.edgeFriction;\n _.touchObject.edgeHit = true;\n }\n }\n\n if (_.options.vertical === false) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n } else {\n _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset;\n }\n if (_.options.verticalSwiping === true) {\n _.swipeLeft = curLeft + swipeLength * positionOffset;\n }\n\n if (_.options.fade === true || _.options.touchMove === false) {\n return false;\n }\n\n if (_.animating === true) {\n _.swipeLeft = null;\n return false;\n }\n\n _.setCSS(_.swipeLeft);\n\n };\n\n Slick.prototype.swipeStart = function(event) {\n\n var _ = this,\n touches;\n\n _.interrupted = true;\n\n if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) {\n _.touchObject = {};\n return false;\n }\n\n if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) {\n touches = event.originalEvent.touches[0];\n }\n\n _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX;\n _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY;\n\n _.dragging = true;\n\n };\n\n Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() {\n\n var _ = this;\n\n if (_.$slidesCache !== null) {\n\n _.unload();\n\n _.$slideTrack.children(this.options.slide).detach();\n\n _.$slidesCache.appendTo(_.$slideTrack);\n\n _.reinit();\n\n }\n\n };\n\n Slick.prototype.unload = function() {\n\n var _ = this;\n\n $('.slick-cloned', _.$slider).remove();\n\n if (_.$dots) {\n _.$dots.remove();\n }\n\n if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) {\n _.$prevArrow.remove();\n }\n\n if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) {\n _.$nextArrow.remove();\n }\n\n _.$slides\n .removeClass('slick-slide slick-active slick-visible slick-current')\n .attr('aria-hidden', 'true')\n .css('width', '');\n\n };\n\n Slick.prototype.unslick = function(fromBreakpoint) {\n\n var _ = this;\n _.$slider.trigger('unslick', [_, fromBreakpoint]);\n _.destroy();\n\n };\n\n Slick.prototype.updateArrows = function() {\n\n var _ = this,\n centerOffset;\n\n centerOffset = Math.floor(_.options.slidesToShow / 2);\n\n if ( _.options.arrows === true &&\n _.slideCount > _.options.slidesToShow &&\n !_.options.infinite ) {\n\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n if (_.currentSlide === 0) {\n\n _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) {\n\n _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true');\n _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false');\n\n }\n\n }\n\n };\n\n Slick.prototype.updateDots = function() {\n\n var _ = this;\n\n if (_.$dots !== null) {\n\n _.$dots\n .find('li')\n .removeClass('slick-active')\n .end();\n\n _.$dots\n .find('li')\n .eq(Math.floor(_.currentSlide / _.options.slidesToScroll))\n .addClass('slick-active');\n\n }\n\n };\n\n Slick.prototype.visibility = function() {\n\n var _ = this;\n\n if ( _.options.autoplay ) {\n\n if ( document[_.hidden] ) {\n\n _.interrupted = true;\n\n } else {\n\n _.interrupted = false;\n\n }\n\n }\n\n };\n\n $.fn.slick = function() {\n var _ = this,\n opt = arguments[0],\n args = Array.prototype.slice.call(arguments, 1),\n l = _.length,\n i,\n ret;\n for (i = 0; i < l; i++) {\n if (typeof opt == 'object' || typeof opt == 'undefined')\n _[i].slick = new Slick(_[i], opt);\n else\n ret = _[i].slick[opt].apply(_[i].slick, args);\n if (typeof ret != 'undefined') return ret;\n }\n return _;\n };\n\n}));\n","/*\n * Toastr\n * Copyright 2012-2015\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\n * All Rights Reserved.\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\n *\n * ARIA Support: Greta Krafsig\n *\n * Project: https://github.com/CodeSeven/toastr\n */\n/* global define */\n(function (define) {\n define(['jquery'], function ($) {\n return (function () {\n var $container;\n var listener;\n var toastId = 0;\n var toastType = {\n error: 'error',\n info: 'info',\n success: 'success',\n warning: 'warning'\n };\n\n var toastr = {\n clear: clear,\n remove: remove,\n error: error,\n getContainer: getContainer,\n info: info,\n options: {},\n subscribe: subscribe,\n success: success,\n version: '2.1.4',\n warning: warning\n };\n\n var previousToast;\n\n return toastr;\n\n ////////////////\n\n function error(message, title, optionsOverride) {\n return notify({\n type: toastType.error,\n iconClass: getOptions().iconClasses.error,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function getContainer(options, create) {\n if (!options) { options = getOptions(); }\n $container = $('#' + options.containerId);\n if ($container.length) {\n return $container;\n }\n if (create) {\n $container = createContainer(options);\n }\n return $container;\n }\n\n function info(message, title, optionsOverride) {\n return notify({\n type: toastType.info,\n iconClass: getOptions().iconClasses.info,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function subscribe(callback) {\n listener = callback;\n }\n\n function success(message, title, optionsOverride) {\n return notify({\n type: toastType.success,\n iconClass: getOptions().iconClasses.success,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function warning(message, title, optionsOverride) {\n return notify({\n type: toastType.warning,\n iconClass: getOptions().iconClasses.warning,\n message: message,\n optionsOverride: optionsOverride,\n title: title\n });\n }\n\n function clear($toastElement, clearOptions) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if (!clearToast($toastElement, options, clearOptions)) {\n clearContainer(options);\n }\n }\n\n function remove($toastElement) {\n var options = getOptions();\n if (!$container) { getContainer(options); }\n if ($toastElement && $(':focus', $toastElement).length === 0) {\n removeToast($toastElement);\n return;\n }\n if ($container.children().length) {\n $container.remove();\n }\n }\n\n // internal functions\n\n function clearContainer (options) {\n var toastsToClear = $container.children();\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\n clearToast($(toastsToClear[i]), options);\n }\n }\n\n function clearToast ($toastElement, options, clearOptions) {\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\n $toastElement[options.hideMethod]({\n duration: options.hideDuration,\n easing: options.hideEasing,\n complete: function () { removeToast($toastElement); }\n });\n return true;\n }\n return false;\n }\n\n function createContainer(options) {\n $container = $('<div/>')\n .attr('id', options.containerId)\n .addClass(options.positionClass);\n\n $container.appendTo($(options.target));\n return $container;\n }\n\n function getDefaults() {\n return {\n tapToDismiss: true,\n toastClass: 'toast',\n containerId: 'toast-container',\n debug: false,\n\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\n showDuration: 300,\n showEasing: 'swing', //swing and linear are built into jQuery\n onShown: undefined,\n hideMethod: 'fadeOut',\n hideDuration: 1000,\n hideEasing: 'swing',\n onHidden: undefined,\n closeMethod: false,\n closeDuration: false,\n closeEasing: false,\n closeOnHover: true,\n\n extendedTimeOut: 1000,\n iconClasses: {\n error: 'toast-error',\n info: 'toast-info',\n success: 'toast-success',\n warning: 'toast-warning'\n },\n iconClass: 'toast-info',\n positionClass: 'toast-top-right',\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\n titleClass: 'toast-title',\n messageClass: 'toast-message',\n escapeHtml: false,\n target: 'body',\n closeHtml: '<button type=\"button\">×</button>',\n closeClass: 'toast-close-button',\n newestOnTop: true,\n preventDuplicates: false,\n progressBar: false,\n progressClass: 'toast-progress',\n rtl: false\n };\n }\n\n function publish(args) {\n if (!listener) { return; }\n listener(args);\n }\n\n function notify(map) {\n var options = getOptions();\n var iconClass = map.iconClass || options.iconClass;\n\n if (typeof (map.optionsOverride) !== 'undefined') {\n options = $.extend(options, map.optionsOverride);\n iconClass = map.optionsOverride.iconClass || iconClass;\n }\n\n if (shouldExit(options, map)) { return; }\n\n toastId++;\n\n $container = getContainer(options, true);\n\n var intervalId = null;\n var $toastElement = $('<div/>');\n var $titleElement = $('<div/>');\n var $messageElement = $('<div/>');\n var $progressElement = $('<div/>');\n var $closeElement = $(options.closeHtml);\n var progressBar = {\n intervalId: null,\n hideEta: null,\n maxHideTime: null\n };\n var response = {\n toastId: toastId,\n state: 'visible',\n startTime: new Date(),\n options: options,\n map: map\n };\n\n personalizeToast();\n\n displayToast();\n\n handleEvents();\n\n publish(response);\n\n if (options.debug && console) {\n console.log(response);\n }\n\n return $toastElement;\n\n function escapeHtml(source) {\n if (source == null) {\n source = '';\n }\n\n return source\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n\n function personalizeToast() {\n setIcon();\n setTitle();\n setMessage();\n setCloseButton();\n setProgressBar();\n setRTL();\n setSequence();\n setAria();\n }\n\n function setAria() {\n var ariaValue = '';\n switch (map.iconClass) {\n case 'toast-success':\n case 'toast-info':\n ariaValue = 'polite';\n break;\n default:\n ariaValue = 'assertive';\n }\n $toastElement.attr('aria-live', ariaValue);\n }\n\n function handleEvents() {\n if (options.closeOnHover) {\n $toastElement.hover(stickAround, delayedHideToast);\n }\n\n if (!options.onclick && options.tapToDismiss) {\n $toastElement.click(hideToast);\n }\n\n if (options.closeButton && $closeElement) {\n $closeElement.click(function (event) {\n if (event.stopPropagation) {\n event.stopPropagation();\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\n event.cancelBubble = true;\n }\n\n if (options.onCloseClick) {\n options.onCloseClick(event);\n }\n\n hideToast(true);\n });\n }\n\n if (options.onclick) {\n $toastElement.click(function (event) {\n options.onclick(event);\n hideToast();\n });\n }\n }\n\n function displayToast() {\n $toastElement.hide();\n\n $toastElement[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\n );\n\n if (options.timeOut > 0) {\n intervalId = setTimeout(hideToast, options.timeOut);\n progressBar.maxHideTime = parseFloat(options.timeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n if (options.progressBar) {\n progressBar.intervalId = setInterval(updateProgress, 10);\n }\n }\n }\n\n function setIcon() {\n if (map.iconClass) {\n $toastElement.addClass(options.toastClass).addClass(iconClass);\n }\n }\n\n function setSequence() {\n if (options.newestOnTop) {\n $container.prepend($toastElement);\n } else {\n $container.append($toastElement);\n }\n }\n\n function setTitle() {\n if (map.title) {\n var suffix = map.title;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.title);\n }\n $titleElement.append(suffix).addClass(options.titleClass);\n $toastElement.append($titleElement);\n }\n }\n\n function setMessage() {\n if (map.message) {\n var suffix = map.message;\n if (options.escapeHtml) {\n suffix = escapeHtml(map.message);\n }\n $messageElement.append(suffix).addClass(options.messageClass);\n $toastElement.append($messageElement);\n }\n }\n\n function setCloseButton() {\n if (options.closeButton) {\n $closeElement.addClass(options.closeClass).attr('role', 'button');\n $toastElement.prepend($closeElement);\n }\n }\n\n function setProgressBar() {\n if (options.progressBar) {\n $progressElement.addClass(options.progressClass);\n $toastElement.prepend($progressElement);\n }\n }\n\n function setRTL() {\n if (options.rtl) {\n $toastElement.addClass('rtl');\n }\n }\n\n function shouldExit(options, map) {\n if (options.preventDuplicates) {\n if (map.message === previousToast) {\n return true;\n } else {\n previousToast = map.message;\n }\n }\n return false;\n }\n\n function hideToast(override) {\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\n var duration = override && options.closeDuration !== false ?\n options.closeDuration : options.hideDuration;\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\n if ($(':focus', $toastElement).length && !override) {\n return;\n }\n clearTimeout(progressBar.intervalId);\n return $toastElement[method]({\n duration: duration,\n easing: easing,\n complete: function () {\n removeToast($toastElement);\n clearTimeout(intervalId);\n if (options.onHidden && response.state !== 'hidden') {\n options.onHidden();\n }\n response.state = 'hidden';\n response.endTime = new Date();\n publish(response);\n }\n });\n }\n\n function delayedHideToast() {\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\n }\n }\n\n function stickAround() {\n clearTimeout(intervalId);\n progressBar.hideEta = 0;\n $toastElement.stop(true, true)[options.showMethod](\n {duration: options.showDuration, easing: options.showEasing}\n );\n }\n\n function updateProgress() {\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\n $progressElement.width(percentage + '%');\n }\n }\n\n function getOptions() {\n return $.extend({}, getDefaults(), toastr.options);\n }\n\n function removeToast($toastElement) {\n if (!$container) { $container = getContainer(); }\n if ($toastElement.is(':visible')) {\n return;\n }\n $toastElement.remove();\n $toastElement = null;\n if ($container.children().length === 0) {\n $container.remove();\n previousToast = undefined;\n }\n }\n\n })();\n });\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\n if (typeof module !== 'undefined' && module.exports) { //Node\n module.exports = factory(require('jquery'));\n } else {\n window.toastr = factory(window.jQuery);\n }\n}));\n","'use strict'\r\n\r\nvar parsePhoneNumberFromString = require('../build/parsePhoneNumber.js').default\r\n\r\n// ES5 `require()` \"default\" \"interoperability\" hack.\r\n// https://github.com/babel/babel/issues/2212#issuecomment-131827986\r\n// An alternative approach:\r\n// https://www.npmjs.com/package/babel-plugin-add-module-exports\r\nexports = module.exports = parsePhoneNumberFromString\r\nexports['default'] = parsePhoneNumberFromString\r\n\r\nexports.ParseError = require('../build/ParseError.js').default\r\nvar parsePhoneNumberWithError = require('../build/parsePhoneNumberWithError.js').default\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexports.parsePhoneNumberWithError = parsePhoneNumberWithError\r\nexports.parsePhoneNumber = parsePhoneNumberWithError\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexports.parsePhoneNumberFromString = parsePhoneNumberFromString\r\n\r\nexports.isValidPhoneNumber = require('../build/isValidPhoneNumber.js').default\r\nexports.isPossiblePhoneNumber = require('../build/isPossiblePhoneNumber.js').default\r\nexports.validatePhoneNumberLength = require('../build/validatePhoneNumberLength.js').default\r\n\r\nexports.findNumbers = require('../build/legacy/findNumbers.js').default\r\nexports.searchNumbers = require('../build/legacy/searchNumbers.js').default\r\n\r\nexports.findPhoneNumbersInText = require('../build/findPhoneNumbersInText.js').default\r\nexports.searchPhoneNumbersInText = require('../build/searchPhoneNumbersInText.js').default\r\nexports.PhoneNumberMatcher = require('../build/PhoneNumberMatcher.js').default\r\n\r\nexports.AsYouType = require('../build/AsYouType.js').default\r\n\r\nexports.Metadata = require('../build/metadata.js').default\r\nexports.isSupportedCountry = require('../build/metadata.js').isSupportedCountry\r\nexports.getCountries = require('../build/getCountries.js').default\r\nexports.getCountryCallingCode = require('../build/metadata.js').getCountryCallingCode\r\nexports.getExtPrefix = require('../build/metadata.js').getExtPrefix\r\n\r\nexports.getExampleNumber = require('../build/getExampleNumber.js').default\r\n\r\nexports.formatIncompletePhoneNumber = require('../build/formatIncompletePhoneNumber.js').default\r\n\r\nexports.parseIncompletePhoneNumber = require('../build/parseIncompletePhoneNumber.js').default\r\nexports.parsePhoneNumberCharacter = require('../build/parseIncompletePhoneNumber.js').parsePhoneNumberCharacter\r\nexports.parseDigits = require('../build/helpers/parseDigits.js').default\r\nexports.DIGIT_PLACEHOLDER = require('../build/AsYouTypeFormatter.js').DIGIT_PLACEHOLDER\r\n\r\nexports.parseRFC3966 = require('../build/helpers/RFC3966.js').parseRFC3966\r\nexports.formatRFC3966 = require('../build/helpers/RFC3966.js').formatRFC3966","'use strict'\r\n\r\nvar min = require('./min/index.cjs')\r\nvar metadata = require('./metadata.min.json')\r\n\r\nfunction withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}\r\n\r\n// ES5 `require()` \"default\" \"interoperability\" hack.\r\n// https://github.com/babel/babel/issues/2212#issuecomment-131827986\r\n// An alternative approach:\r\n// https://www.npmjs.com/package/babel-plugin-add-module-exports\r\nexports = module.exports = min.parsePhoneNumberFromString\r\nexports['default'] = min.parsePhoneNumberFromString\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexports.parsePhoneNumberFromString = min.parsePhoneNumberFromString\r\n\r\nexports.ParseError = min.ParseError\r\n\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexports.parsePhoneNumber = min.parsePhoneNumberWithError\r\nexports.parsePhoneNumberWithError = min.parsePhoneNumberWithError\r\n\r\nexports.isValidPhoneNumber = min.isValidPhoneNumber\r\nexports.isPossiblePhoneNumber = min.isPossiblePhoneNumber\r\nexports.validatePhoneNumberLength = min.validatePhoneNumberLength\r\n\r\n// `parse()` and `parseNumber()` functions are deprecated.\r\nvar parse_ = require('./build/legacy/parse.js').default\r\nexports.parse = function parse() {\r\n\treturn withMetadataArgument(parse_, arguments)\r\n}\r\nexports.parseNumber = exports.parse\r\n\r\n// `format()` and `formatNumber()` functions are deprecated.\r\nvar format_ = require('./build/legacy/format.js').default\r\nexports.format = function format() {\r\n\treturn withMetadataArgument(format_, arguments)\r\n}\r\nexports.formatNumber = exports.format\r\n\r\n// Deprecated.\r\nvar getNumberType_ = require('./build/legacy/getNumberType.js').default\r\nexports.getNumberType = function getNumberType() {\r\n\treturn withMetadataArgument(getNumberType_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar isPossibleNumber_ = require('./build/legacy/isPossibleNumber.js').default\r\nexports.isPossibleNumber = function isPossibleNumber() {\r\n\treturn withMetadataArgument(isPossibleNumber_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar isValidNumber_ = require('./build/legacy/isValidNumber.js').default\r\nexports.isValidNumber = function isValidNumber() {\r\n\treturn withMetadataArgument(isValidNumber_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar isValidNumberForRegion_ = require('./build/legacy/isValidNumberForRegion.js').default\r\nexports.isValidNumberForRegion = function isValidNumberForRegion() {\r\n\treturn withMetadataArgument(isValidNumberForRegion_, arguments)\r\n}\r\n\r\nexports.getExampleNumber = min.getExampleNumber\r\nexports.Metadata = min.Metadata\r\n\r\n// Deprecated.\r\nvar findPhoneNumbers_ = require('./build/legacy/findPhoneNumbers.js').default\r\nexports.findPhoneNumbers = function findPhoneNumbers() {\r\n\treturn withMetadataArgument(findPhoneNumbers_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar searchPhoneNumbers_ = require('./build/legacy/findPhoneNumbers.js').searchPhoneNumbers\r\nexports.searchPhoneNumbers = function searchPhoneNumbers() {\r\n\treturn withMetadataArgument(searchPhoneNumbers_, arguments)\r\n}\r\n\r\n// Deprecated.\r\nvar PhoneNumberSearch_ = require('./build/legacy/findPhoneNumbersInitialImplementation.js').PhoneNumberSearch\r\nexports.PhoneNumberSearch = function PhoneNumberSearch(text, options) {\r\n\treturn PhoneNumberSearch_.call(this, text, options, metadata)\r\n}\r\nexports.PhoneNumberSearch.prototype = Object.create(PhoneNumberSearch_.prototype, {})\r\nexports.PhoneNumberSearch.prototype.constructor = exports.PhoneNumberSearch\r\n\r\n// Deprecated.\r\nexports.findNumbers = min.findNumbers\r\n// Deprecated.\r\nexports.searchNumbers = min.searchNumbers\r\n\r\nexports.findPhoneNumbersInText = min.findPhoneNumbersInText\r\nexports.searchPhoneNumbersInText = min.searchPhoneNumbersInText\r\nexports.PhoneNumberMatcher = min.PhoneNumberMatcher\r\n\r\nexports.AsYouType = min.AsYouType\r\n\r\nexports.getCountries = min.getCountries\r\nexports.getCountryCallingCode = min.getCountryCallingCode\r\nexports.isSupportedCountry = min.isSupportedCountry\r\nexports.getExtPrefix = min.getExtPrefix\r\n\r\nexports.parseRFC3966 = min.parseRFC3966\r\nexports.formatRFC3966 = min.formatRFC3966\r\n\r\n// Deprecated: `DIGITS` were used by `react-phone-number-input`.\r\n// Replaced by `parseDigits()`.\r\nexports.DIGITS = require('./build/helpers/parseDigits.js').DIGITS\r\nexports.DIGIT_PLACEHOLDER = min.DIGIT_PLACEHOLDER\r\n\r\n// `getPhoneCode` name is deprecated\r\nexports.getPhoneCode = min.getCountryCallingCode\r\n\r\nexports.formatIncompletePhoneNumber = min.formatIncompletePhoneNumber\r\nexports.parseIncompletePhoneNumber = min.parseIncompletePhoneNumber\r\nexports.parsePhoneNumberCharacter = min.parsePhoneNumberCharacter\r\nexports.parseDigits = min.parseDigits","'use strict'\r\n\r\nvar metadata = require('../metadata.max.json')\r\nvar core = require('../core/index.cjs')\r\n\r\nfunction call(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}\r\n\r\nfunction parsePhoneNumberFromString() {\r\n\treturn call(core.parsePhoneNumberFromString, arguments)\r\n}\r\n\r\n// ES5 `require()` \"default\" \"interoperability\" hack.\r\n// https://github.com/babel/babel/issues/2212#issuecomment-131827986\r\n// An alternative approach:\r\n// https://www.npmjs.com/package/babel-plugin-add-module-exports\r\nexports = module.exports = parsePhoneNumberFromString\r\nexports['default'] = parsePhoneNumberFromString\r\n\r\nexports.ParseError = core.ParseError\r\n\r\nfunction parsePhoneNumberWithError() {\r\n\treturn call(core.parsePhoneNumberWithError, arguments)\r\n}\r\n\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexports.parsePhoneNumber = parsePhoneNumberWithError\r\nexports.parsePhoneNumberWithError = parsePhoneNumberWithError\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexports.parsePhoneNumberFromString = parsePhoneNumberFromString\r\n\r\nexports.isValidPhoneNumber = function isValidPhoneNumber() {\r\n\treturn call(core.isValidPhoneNumber, arguments)\r\n}\r\n\r\nexports.isPossiblePhoneNumber = function isPossiblePhoneNumber() {\r\n\treturn call(core.isPossiblePhoneNumber, arguments)\r\n}\r\n\r\nexports.validatePhoneNumberLength = function validatePhoneNumberLength() {\r\n\treturn call(core.validatePhoneNumberLength, arguments)\r\n}\r\n\r\nexports.findNumbers = function findNumbers() {\r\n\treturn call(core.findNumbers, arguments)\r\n}\r\n\r\nexports.searchNumbers = function searchNumbers() {\r\n\treturn call(core.searchNumbers, arguments)\r\n}\r\n\r\nexports.findPhoneNumbersInText = function findPhoneNumbersInText() {\r\n\treturn call(core.findPhoneNumbersInText, arguments)\r\n}\r\n\r\nexports.searchPhoneNumbersInText = function searchPhoneNumbersInText() {\r\n\treturn call(core.searchPhoneNumbersInText, arguments)\r\n}\r\n\r\nexports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) {\r\n\treturn core.PhoneNumberMatcher.call(this, text, options, metadata)\r\n}\r\nexports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {})\r\nexports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher\r\n\r\nexports.AsYouType = function AsYouType(country) {\r\n\treturn core.AsYouType.call(this, country, metadata)\r\n}\r\nexports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {})\r\nexports.AsYouType.prototype.constructor = exports.AsYouType\r\n\r\nexports.isSupportedCountry = function isSupportedCountry(country) {\r\n\treturn call(core.isSupportedCountry, arguments)\r\n}\r\n\r\nexports.getCountries = function getCountries() {\r\n\treturn call(core.getCountries, arguments)\r\n}\r\n\r\nexports.getCountryCallingCode = function getCountryCallingCode() {\r\n\treturn call(core.getCountryCallingCode, arguments)\r\n}\r\n\r\nexports.getExtPrefix = function getExtPrefix(country) {\r\n\treturn call(core.getExtPrefix, arguments)\r\n}\r\n\r\nexports.getExampleNumber = function getExampleNumber() {\r\n\treturn call(core.getExampleNumber, arguments)\r\n}\r\n\r\nexports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() {\r\n\treturn call(core.formatIncompletePhoneNumber, arguments)\r\n}\r\n\r\nexports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber\r\nexports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter\r\nexports.parseDigits = core.parseDigits\r\nexports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER\r\n\r\nexports.parseRFC3966 = core.parseRFC3966\r\nexports.formatRFC3966 = core.formatRFC3966","'use strict'\r\n\r\nvar metadata = require('../metadata.min.json')\r\nvar core = require('../core/index.cjs')\r\n\r\nfunction call(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}\r\n\r\nfunction parsePhoneNumberFromString() {\r\n\treturn call(core.parsePhoneNumberFromString, arguments)\r\n}\r\n\r\n// ES5 `require()` \"default\" \"interoperability\" hack.\r\n// https://github.com/babel/babel/issues/2212#issuecomment-131827986\r\n// An alternative approach:\r\n// https://www.npmjs.com/package/babel-plugin-add-module-exports\r\nexports = module.exports = parsePhoneNumberFromString\r\nexports['default'] = parsePhoneNumberFromString\r\n\r\nexports.ParseError = core.ParseError\r\n\r\nfunction parsePhoneNumberWithError() {\r\n\treturn call(core.parsePhoneNumberWithError, arguments)\r\n}\r\n\r\n// `parsePhoneNumber()` named export has been renamed to `parsePhoneNumberWithError()`.\r\nexports.parsePhoneNumber = parsePhoneNumberWithError\r\nexports.parsePhoneNumberWithError = parsePhoneNumberWithError\r\n\r\n// `parsePhoneNumberFromString()` named export is now considered legacy:\r\n// it has been promoted to a default export due to being too verbose.\r\nexports.parsePhoneNumberFromString = parsePhoneNumberFromString\r\n\r\nexports.isValidPhoneNumber = function isValidPhoneNumber() {\r\n\treturn call(core.isValidPhoneNumber, arguments)\r\n}\r\n\r\nexports.isPossiblePhoneNumber = function isPossiblePhoneNumber() {\r\n\treturn call(core.isPossiblePhoneNumber, arguments)\r\n}\r\n\r\nexports.validatePhoneNumberLength = function validatePhoneNumberLength() {\r\n\treturn call(core.validatePhoneNumberLength, arguments)\r\n}\r\n\r\nexports.findNumbers = function findNumbers() {\r\n\treturn call(core.findNumbers, arguments)\r\n}\r\n\r\nexports.searchNumbers = function searchNumbers() {\r\n\treturn call(core.searchNumbers, arguments)\r\n}\r\n\r\nexports.findPhoneNumbersInText = function findPhoneNumbersInText() {\r\n\treturn call(core.findPhoneNumbersInText, arguments)\r\n}\r\n\r\nexports.searchPhoneNumbersInText = function searchPhoneNumbersInText() {\r\n\treturn call(core.searchPhoneNumbersInText, arguments)\r\n}\r\n\r\nexports.PhoneNumberMatcher = function PhoneNumberMatcher(text, options) {\r\n\treturn core.PhoneNumberMatcher.call(this, text, options, metadata)\r\n}\r\nexports.PhoneNumberMatcher.prototype = Object.create(core.PhoneNumberMatcher.prototype, {})\r\nexports.PhoneNumberMatcher.prototype.constructor = exports.PhoneNumberMatcher\r\n\r\nexports.AsYouType = function AsYouType(country) {\r\n\treturn core.AsYouType.call(this, country, metadata)\r\n}\r\nexports.AsYouType.prototype = Object.create(core.AsYouType.prototype, {})\r\nexports.AsYouType.prototype.constructor = exports.AsYouType\r\n\r\nexports.isSupportedCountry = function isSupportedCountry(country) {\r\n\treturn call(core.isSupportedCountry, arguments)\r\n}\r\n\r\nexports.getCountries = function getCountries() {\r\n\treturn call(core.getCountries, arguments)\r\n}\r\n\r\nexports.getCountryCallingCode = function getCountryCallingCode() {\r\n\treturn call(core.getCountryCallingCode, arguments)\r\n}\r\n\r\nexports.getExtPrefix = function getExtPrefix(country) {\r\n\treturn call(core.getExtPrefix, arguments)\r\n}\r\n\r\nexports.getExampleNumber = function getExampleNumber() {\r\n\treturn call(core.getExampleNumber, arguments)\r\n}\r\n\r\nexports.Metadata = function Metadata() {\r\n\treturn core.Metadata.call(this, metadata)\r\n}\r\nexports.Metadata.prototype = Object.create(core.Metadata.prototype, {})\r\nexports.Metadata.prototype.constructor = exports.Metadata\r\n\r\nexports.formatIncompletePhoneNumber = function formatIncompletePhoneNumber() {\r\n\treturn call(core.formatIncompletePhoneNumber, arguments)\r\n}\r\n\r\nexports.parseIncompletePhoneNumber = core.parseIncompletePhoneNumber\r\nexports.parsePhoneNumberCharacter = core.parsePhoneNumberCharacter\r\nexports.parseDigits = core.parseDigits\r\nexports.DIGIT_PLACEHOLDER = core.DIGIT_PLACEHOLDER\r\n\r\nexports.parseRFC3966 = core.parseRFC3966\r\nexports.formatRFC3966 = core.formatRFC3966","import Metadata from './metadata.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport AsYouTypeState from './AsYouTypeState.js'\r\nimport AsYouTypeFormatter, { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.js'\r\nimport AsYouTypeParser, { extractFormattedDigitsAndPlus } from './AsYouTypeParser.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class AsYouType {\r\n\t/**\r\n\t * @param {(string|object)?} [optionsOrDefaultCountry] - The default country used for parsing non-international phone numbers. Can also be an `options` object.\r\n\t * @param {Object} metadata\r\n\t */\r\n\tconstructor(optionsOrDefaultCountry, metadata) {\r\n\t\tthis.metadata = new Metadata(metadata)\r\n\t\tconst [defaultCountry, defaultCallingCode] = this.getCountryAndCallingCode(optionsOrDefaultCountry)\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.reset()\r\n\t}\r\n\r\n\tgetCountryAndCallingCode(optionsOrDefaultCountry) {\r\n\t\t// Set `defaultCountry` and `defaultCallingCode` options.\r\n\t\tlet defaultCountry\r\n\t\tlet defaultCallingCode\r\n\t\t// Turns out `null` also has type \"object\". Weird.\r\n\t\tif (optionsOrDefaultCountry) {\r\n\t\t\tif (typeof optionsOrDefaultCountry === 'object') {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry.defaultCountry\r\n\t\t\t\tdefaultCallingCode = optionsOrDefaultCountry.defaultCallingCode\r\n\t\t\t} else {\r\n\t\t\t\tdefaultCountry = optionsOrDefaultCountry\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (defaultCountry && !this.metadata.hasCountry(defaultCountry)) {\r\n\t\t\tdefaultCountry = undefined\r\n\t\t}\r\n\t\tif (defaultCallingCode) {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (this.metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tdefaultCountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn [defaultCountry, defaultCallingCode]\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number characters.\r\n\t * @param {string} text\r\n\t * @return {string} Formatted phone number characters that have been input so far.\r\n\t */\r\n\tinput(text) {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t} = this.parser.input(text, this.state)\r\n\t\tif (justLeadingPlus) {\r\n\t\t\tthis.formattedOutput = '+'\r\n\t\t} else if (digits) {\r\n\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t// Match the available formats by the currently available leading digits.\r\n\t\t\tif (this.state.nationalSignificantNumber) {\r\n\t\t\t\tthis.formatter.narrowDownMatchingFormats(this.state)\r\n\t\t\t}\r\n\t\t\tlet formattedNationalNumber\r\n\t\t\tif (this.metadata.hasSelectedNumberingPlan()) {\r\n\t\t\t\tformattedNationalNumber = this.formatter.format(digits, this.state)\r\n\t\t\t}\r\n\t\t\tif (formattedNationalNumber === undefined) {\r\n\t\t\t\t// See if another national (significant) number could be re-extracted.\r\n\t\t\t\tif (this.parser.reExtractNationalSignificantNumber(this.state)) {\r\n\t\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\t\t// If it could, then re-try formatting the new national (significant) number.\r\n\t\t\t\t\tconst nationalDigits = this.state.getNationalDigits()\r\n\t\t\t\t\tif (nationalDigits) {\r\n\t\t\t\t\t\tformattedNationalNumber = this.formatter.format(nationalDigits, this.state)\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.formattedOutput = formattedNationalNumber\r\n\t\t\t\t? this.getFullNumber(formattedNationalNumber)\r\n\t\t\t\t: this.getNonFormattedNumber()\r\n\t\t}\r\n\t\treturn this.formattedOutput\r\n\t}\r\n\r\n\treset() {\r\n\t\tthis.state = new AsYouTypeState({\r\n\t\t\tonCountryChange: (country) => {\r\n\t\t\t\t// Before version `1.6.0`, the official `AsYouType` formatter API\r\n\t\t\t\t// included the `.country` property of an `AsYouType` instance.\r\n\t\t\t\t// Since that property (along with the others) have been moved to\r\n\t\t\t\t// `this.state`, `this.country` property is emulated for compatibility\r\n\t\t\t\t// with the old versions.\r\n\t\t\t\tthis.country = country\r\n\t\t\t},\r\n\t\t\tonCallingCodeChange: (callingCode, country) => {\r\n\t\t\t\tthis.metadata.selectNumberingPlan(country, callingCode)\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t\tthis.parser.reset(this.metadata.numberingPlan)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.formatter = new AsYouTypeFormatter({\r\n\t\t\tstate: this.state,\r\n\t\t\tmetadata: this.metadata\r\n\t\t})\r\n\t\tthis.parser = new AsYouTypeParser({\r\n\t\t\tdefaultCountry: this.defaultCountry,\r\n\t\t\tdefaultCallingCode: this.defaultCallingCode,\r\n\t\t\tmetadata: this.metadata,\r\n\t\t\tstate: this.state,\r\n\t\t\tonNationalSignificantNumberChange: () => {\r\n\t\t\t\tthis.determineTheCountryIfNeeded()\r\n\t\t\t\tthis.formatter.reset(this.metadata.numberingPlan, this.state)\r\n\t\t\t}\r\n\t\t})\r\n\t\tthis.state.reset({\r\n\t\t\tcountry: this.defaultCountry,\r\n\t\t\tcallingCode: this.defaultCallingCode\r\n\t\t})\r\n\t\tthis.formattedOutput = ''\r\n\t\treturn this\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is being input in international format.\r\n\t * In other words, returns `true` if and only if the parsed phone number starts with a `\"+\"`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisInternational() {\r\n\t\treturn this.state.international\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the \"calling code\" part of the phone number when it's being input\r\n\t * in an international format.\r\n\t * If no valid calling code has been entered so far, returns `undefined`.\r\n\t * @return {string} [callingCode]\r\n\t */\r\n\tgetCallingCode() {\r\n\t\t // If the number is being input in national format and some \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then `this.state.callingCode`\r\n\t\t // is equal to that \"default calling code\".\r\n\t\t //\r\n\t\t // If the number is being input in national format and no \"default calling code\"\r\n\t\t // has been passed to `AsYouType` constructor, then returns `undefined`,\r\n\t\t // even if a \"default country\" has been passed to `AsYouType` constructor.\r\n\t\t //\r\n\t\tif (this.isInternational()) {\r\n\t\t\treturn this.state.callingCode\r\n\t\t}\r\n\t}\r\n\r\n\t// A legacy alias.\r\n\tgetCountryCallingCode() {\r\n\t\treturn this.getCallingCode()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * Returns `undefined` if no phone number has been input yet.\r\n\t * @return {string} [country]\r\n\t */\r\n\tgetCountry() {\r\n\t\tconst { digits } = this.state\r\n\t\t// Return `undefined` if no digits have been input yet.\r\n\t\tif (digits) {\r\n\t\t\treturn this._getCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a two-letter country code of the phone number.\r\n\t * Returns `undefined` for \"non-geographic\" phone numbering plans.\r\n\t * @return {string} [country]\r\n\t */\r\n\t_getCountry() {\r\n\t\tconst { country } = this.state\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t// `AsYouType.getCountry()` returns `undefined`\r\n\t\t\t// for \"non-geographic\" phone numbering plans.\r\n\t\t\tif (country === '001') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn country\r\n\t}\r\n\r\n\tdetermineTheCountryIfNeeded() {\r\n\t\t// Suppose a user enters a phone number in international format,\r\n\t\t// and there're several countries corresponding to that country calling code,\r\n\t\t// and a country has been derived from the number, and then\r\n\t\t// a user enters one more digit and the number is no longer\r\n\t\t// valid for the derived country, so the country should be re-derived\r\n\t\t// on every new digit in those cases.\r\n\t\t//\r\n\t\t// If the phone number is being input in national format,\r\n\t\t// then it could be a case when `defaultCountry` wasn't specified\r\n\t\t// when creating `AsYouType` instance, and just `defaultCallingCode` was specified,\r\n\t\t// and that \"calling code\" could correspond to a \"non-geographic entity\",\r\n\t\t// or there could be several countries corresponding to that country calling code.\r\n\t\t// In those cases, `this.country` is `undefined` and should be derived\r\n\t\t// from the number. Again, if country calling code is ambiguous, then\r\n\t\t// `this.country` should be re-derived with each new digit.\r\n\t\t//\r\n\t\tif (!this.state.country || this.isCountryCallingCodeAmbiguous()) {\r\n\t\t\tthis.determineTheCountry()\r\n\t\t}\r\n\t}\r\n\r\n\t// Prepends `+CountryCode ` in case of an international phone number\r\n\tgetFullNumber(formattedNationalNumber) {\r\n\t\tif (this.isInternational()) {\r\n\t\t\tconst prefix = (text) => this.formatter.getInternationalPrefixBeforeCountryCallingCode(this.state, {\r\n\t\t\t\tspacing: text ? true : false\r\n\t\t\t}) + text\r\n\t\t\tconst { callingCode } = this.state\r\n\t\t\tif (!callingCode) {\r\n\t\t\t\treturn prefix(`${this.state.getDigitsWithoutInternationalPrefix()}`)\r\n\t\t\t}\r\n\t\t\tif (!formattedNationalNumber) {\r\n\t\t\t\treturn prefix(callingCode)\r\n\t\t\t}\r\n\t\t\treturn prefix(`${callingCode} ${formattedNationalNumber}`)\r\n\t\t}\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n\r\n\tgetNonFormattedNationalNumberWithPrefix() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber,\r\n\t\t\tnationalPrefix\r\n\t\t} = this.state\r\n\t\tlet number = nationalSignificantNumber\r\n\t\tconst prefix = complexPrefixBeforeNationalSignificantNumber || nationalPrefix\r\n\t\tif (prefix) {\r\n\t\t\tnumber = prefix + number\r\n\t\t}\r\n\t\treturn number\r\n\t}\r\n\r\n\tgetNonFormattedNumber() {\r\n\t\tconst { nationalSignificantNumberMatchesInput } = this.state\r\n\t\treturn this.getFullNumber(\r\n\t\t\tnationalSignificantNumberMatchesInput\r\n\t\t\t\t? this.getNonFormattedNationalNumberWithPrefix()\r\n\t\t\t\t: this.state.getNationalDigits()\r\n\t\t)\r\n\t}\r\n\r\n\tgetNonFormattedTemplate() {\r\n\t\tconst number = this.getNonFormattedNumber()\r\n\t\tif (number) {\r\n\t\t\treturn number.replace(/[\\+\\d]/g, DIGIT_PLACEHOLDER)\r\n\t\t}\r\n\t}\r\n\r\n\tisCountryCallingCodeAmbiguous() {\r\n\t\tconst { callingCode } = this.state\r\n\t\tconst countryCodes = this.metadata.getCountryCodesForCallingCode(callingCode)\r\n\t\treturn countryCodes && countryCodes.length > 1\r\n\t}\r\n\r\n\t// Determines the country of the phone number\r\n\t// entered so far based on the country phone code\r\n\t// and the national phone number.\r\n\tdetermineTheCountry() {\r\n\t\tthis.state.setCountry(getCountryByCallingCode(\r\n\t\t\tthis.isInternational() ? this.state.callingCode : this.defaultCallingCode,\r\n\t\t\tthis.state.nationalSignificantNumber,\r\n\t\t\tthis.metadata\r\n\t\t))\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a E.164 phone number value for the user's input.\r\n\t *\r\n\t * For example, for country `\"US\"` and input `\"(222) 333-4444\"`\r\n\t * it will return `\"+12223334444\"`.\r\n\t *\r\n\t * For international phone number input, it will also auto-correct\r\n\t * some minor errors such as using a national prefix when writing\r\n\t * an international phone number. For example, if the user inputs\r\n\t * `\"+44 0 7400 000000\"` then it will return an auto-corrected\r\n\t * `\"+447400000000\"` phone number value.\r\n\t *\r\n\t * Will return `undefined` if no digits have been input,\r\n\t * or when inputting a phone number in national format and no\r\n\t * default country or default \"country calling code\" have been set.\r\n\t *\r\n\t * @return {string} [value]\r\n\t */\r\n\tgetNumberValue() {\r\n\t\tconst {\r\n\t\t\tdigits,\r\n\t\t\tcallingCode,\r\n\t\t\tcountry,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = this.state\r\n\r\n\t \t// Will return `undefined` if no digits have been input.\r\n\t\tif (!digits) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (this.isInternational()) {\r\n\t\t\tif (callingCode) {\r\n\t\t\t\treturn '+' + callingCode + nationalSignificantNumber\r\n\t\t\t} else {\r\n\t\t\t\treturn '+' + digits\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst callingCode_ = country ? this.metadata.countryCallingCode() : callingCode\r\n\t\t\t\treturn '+' + callingCode_ + nationalSignificantNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an instance of `PhoneNumber` class.\r\n\t * Will return `undefined` if no national (significant) number\r\n\t * digits have been entered so far, or if no `defaultCountry` has been\r\n\t * set and the user enters a phone number not in international format.\r\n\t */\r\n\tgetNumber() {\r\n\t\tconst {\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tcarrierCode,\r\n\t\t\tcallingCode\r\n\t\t} = this.state\r\n\r\n\t\t// `this._getCountry()` is basically same as `this.state.country`\r\n\t\t// with the only change that it return `undefined` in case of a\r\n\t\t// \"non-geographic\" numbering plan instead of `\"001\"` \"internal use\" value.\r\n\t\tconst country = this._getCountry()\r\n\r\n\t\tif (!nationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tif (!country && !callingCode) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountry || callingCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\t// Phone number extensions are not supported by \"As You Type\" formatter.\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"possible\".\r\n\t * Is just a shortcut for `PhoneNumber.isPossible()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisPossible() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isPossible()\r\n\t}\r\n\r\n\t/**\r\n\t * Returns `true` if the phone number is \"valid\".\r\n\t * Is just a shortcut for `PhoneNumber.isValid()`.\r\n\t * @return {boolean}\r\n\t */\r\n\tisValid() {\r\n\t\tconst phoneNumber = this.getNumber()\r\n\t\tif (!phoneNumber) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn phoneNumber.isValid()\r\n\t}\r\n\r\n\t/**\r\n\t * @deprecated\r\n\t * This method is used in `react-phone-number-input/source/input-control.js`\r\n\t * in versions before `3.0.16`.\r\n\t */\r\n\tgetNationalNumber() {\r\n\t\treturn this.state.nationalSignificantNumber\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the phone number characters entered by the user.\r\n\t * @return {string}\r\n\t */\r\n\tgetChars() {\r\n\t\treturn (this.state.international ? '+' : '') + this.state.digits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the template for the formatted phone number.\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplate() {\r\n\t\treturn this.formatter.getTemplate(this.state) || this.getNonFormattedTemplate() || ''\r\n\t}\r\n}","import PatternParser from './AsYouTypeFormatter.PatternParser.js'\r\n\r\nexport default class PatternMatcher {\r\n\tconstructor(pattern) {\r\n\t\tthis.matchTree = new PatternParser().parse(pattern)\r\n\t}\r\n\r\n\tmatch(string, { allowOverflow } = {}) {\r\n\t\tif (!string) {\r\n\t\t\tthrow new Error('String is required')\r\n\t\t}\r\n\t\tconst result = match(string.split(''), this.matchTree, true)\r\n\t\tif (result && result.match) {\r\n\t\t\tdelete result.matchedChars\r\n\t\t}\r\n\t\tif (result && result.overflow) {\r\n\t\t\tif (!allowOverflow) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result\r\n\t}\r\n}\r\n\r\n/**\r\n * Matches `characters` against a pattern compiled into a `tree`.\r\n * @param {string[]} characters\r\n * @param {Tree} tree — A pattern compiled into a `tree`. See the `*.d.ts` file for the description of the `tree` structure.\r\n * @param {boolean} last — Whether it's the last (rightmost) subtree on its level of the match tree.\r\n * @return {object} See the `*.d.ts` file for the description of the result object.\r\n */\r\nfunction match(characters, tree, last) {\r\n\t// If `tree` is a string, then `tree` is a single character.\r\n\t// That's because when a pattern is parsed, multi-character-string parts\r\n\t// of a pattern are compiled into arrays of single characters.\r\n\t// I still wrote this piece of code for a \"general\" hypothetical case\r\n\t// when `tree` could be a string of several characters, even though\r\n\t// such case is not possible with the current implementation.\r\n\tif (typeof tree === 'string') {\r\n\t\tconst characterString = characters.join('')\r\n\t\tif (tree.indexOf(characterString) === 0) {\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (characters.length === tree.length) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tmatch: true,\r\n\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// `tree` is always a single character.\r\n\t\t\t// If `tree.indexOf(characterString) === 0`\r\n\t\t\t// then `characters.length === tree.length`.\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\treturn {\r\n\t\t\t\tpartialMatch: true,\r\n\t\t\t\t// matchedChars: characters\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (characterString.indexOf(tree) === 0) {\r\n\t\t\tif (last) {\r\n\t\t\t\t// The `else` path is not possible because `tree` is always a single character.\r\n\t\t\t\t// The `else` case for `characters.length > tree.length` would be\r\n\t\t\t\t// `characters.length <= tree.length` which means `characters.length <= 1`.\r\n\t\t\t\t// `characters` array can't be empty, so that means `characters === [tree]`,\r\n\t\t\t\t// which would also mean `tree.indexOf(characterString) === 0` and that'd mean\r\n\t\t\t\t// that the `if (tree.indexOf(characterString) === 0)` condition before this\r\n\t\t\t\t// `if` condition would be entered, and returned from there, not reaching this code.\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (characters.length > tree.length) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tmatch: true,\r\n\t\t\t\tmatchedChars: characters.slice(0, tree.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\r\n\tif (Array.isArray(tree)) {\r\n\t\tlet restCharacters = characters.slice()\r\n\t\tlet i = 0\r\n\t\twhile (i < tree.length) {\r\n\t\t\tconst subtree = tree[i]\r\n\t\t\tconst result = match(restCharacters, subtree, last && (i === tree.length - 1))\r\n\t\t\tif (!result) {\r\n\t\t\t\treturn\r\n\t\t\t} else if (result.overflow) {\r\n\t\t\t\treturn result\r\n\t\t\t} else if (result.match) {\r\n\t\t\t\t// Continue with the next subtree with the rest of the characters.\r\n\t\t\t\trestCharacters = restCharacters.slice(result.matchedChars.length)\r\n\t\t\t\tif (restCharacters.length === 0) {\r\n\t\t\t\t\tif (i === tree.length - 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t\t// matchedChars: characters\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\ti++\r\n\t\t}\r\n\t\t// If `last` then overflow has already been checked\r\n\t\t// by the last element of the `tree` array.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (last) {\r\n\t\t\treturn {\r\n\t\t\t\toverflow: true\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tmatch: true,\r\n\t\t\tmatchedChars: characters.slice(0, characters.length - restCharacters.length)\r\n\t\t}\r\n\t}\r\n\r\n\tswitch (tree.op) {\r\n\t\tcase '|':\r\n\t\t\tlet partialMatch\r\n\t\t\tfor (const branch of tree.args) {\r\n\t\t\t\tconst result = match(characters, branch, last)\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tif (result.overflow) {\r\n\t\t\t\t\t\treturn result\r\n\t\t\t\t\t} else if (result.match) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: result.matchedChars\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\t\tif (result.partialMatch) {\r\n\t\t\t\t\t\t\tpartialMatch = true\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthrow new Error(`Unsupported match result:\\n${JSON.stringify(result, null, 2)}`)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (partialMatch) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tpartialMatch: true,\r\n\t\t\t\t\t// matchedChars: ...\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Not even a partial match.\r\n\t\t\treturn\r\n\r\n\t\tcase '[]':\r\n\t\t\tfor (const char of tree.args) {\r\n\t\t\t\tif (characters[0] === char) {\r\n\t\t\t\t\tif (characters.length === 1) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\t\tmatchedChars: characters\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (last) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\toverflow: true\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tmatch: true,\r\n\t\t\t\t\t\tmatchedChars: [char]\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No character matches.\r\n\t\t\treturn\r\n\r\n\t\t/* istanbul ignore next */\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unsupported instruction tree: ${tree}`)\r\n\t}\r\n}","export default class PatternParser {\r\n\tparse(pattern) {\r\n\t\tthis.context = [{\r\n\t\t\tor: true,\r\n\t\t\tinstructions: []\r\n\t\t}]\r\n\r\n\t\tthis.parsePattern(pattern)\r\n\r\n\t\tif (this.context.length !== 1) {\r\n\t\t\tthrow new Error('Non-finalized contexts left when pattern parse ended')\r\n\t\t}\r\n\r\n\t\tconst { branches, instructions } = this.context[0]\r\n\r\n\t\tif (branches) {\r\n\t\t\treturn {\r\n\t\t\t\top: '|',\r\n\t\t\t\targs: branches.concat([\r\n\t\t\t\t\texpandSingleElementArray(instructions)\r\n\t\t\t\t])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* istanbul ignore if */\r\n\t\tif (instructions.length === 0) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tif (instructions.length === 1) {\r\n\t\t\treturn instructions[0]\r\n\t\t}\r\n\r\n\t\treturn instructions\r\n\t}\r\n\r\n\tstartContext(context) {\r\n\t\tthis.context.push(context)\r\n\t}\r\n\r\n\tendContext() {\r\n\t\tthis.context.pop()\r\n\t}\r\n\r\n\tgetContext() {\r\n\t\treturn this.context[this.context.length - 1]\r\n\t}\r\n\r\n\tparsePattern(pattern) {\r\n\t\tif (!pattern) {\r\n\t\t\tthrow new Error('Pattern is required')\r\n\t\t}\r\n\r\n\t\tconst match = pattern.match(OPERATOR)\r\n\t\tif (!match) {\r\n\t\t\tif (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\r\n\t\t\t\tthrow new Error(`Illegal characters found in a pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tthis.getContext().instructions = this.getContext().instructions.concat(\r\n\t\t\t\tpattern.split('')\r\n\t\t\t)\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tconst operator = match[1]\r\n\t\tconst before = pattern.slice(0, match.index)\r\n\t\tconst rightPart = pattern.slice(match.index + operator.length)\r\n\r\n\t\tswitch (operator) {\r\n\t\t\tcase '(?:':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\tor: true,\r\n\t\t\t\t\tinstructions: [],\r\n\t\t\t\t\tbranches: []\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ')':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\")\" operator must be preceded by \"(?:\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tif (this.getContext().instructions.length === 0) {\r\n\t\t\t\t\tthrow new Error('No instructions found after \"|\" operator in an \"or\" group')\r\n\t\t\t\t}\r\n\t\t\t\tconst { branches } = this.getContext()\r\n\t\t\t\tbranches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '|',\r\n\t\t\t\t\targs: branches\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '|':\r\n\t\t\t\tif (!this.getContext().or) {\r\n\t\t\t\t\tthrow new Error('\"|\" operator can only be used inside \"or\" groups')\r\n\t\t\t\t}\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\t// The top-level is an implicit \"or\" group, if required.\r\n\t\t\t\tif (!this.getContext().branches) {\r\n\t\t\t\t\t// `branches` are not defined only for the root implicit \"or\" operator.\r\n\t\t\t\t\t/* istanbul ignore else */\r\n\t\t\t\t\tif (this.context.length === 1) {\r\n\t\t\t\t\t\tthis.getContext().branches = []\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthrow new Error('\"branches\" not found in an \"or\" group context')\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.getContext().branches.push(\r\n\t\t\t\t\texpandSingleElementArray(\r\n\t\t\t\t\t\tthis.getContext().instructions\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\tthis.getContext().instructions = []\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase '[':\r\n\t\t\t\tif (before) {\r\n\t\t\t\t\tthis.parsePattern(before)\r\n\t\t\t\t}\r\n\t\t\t\tthis.startContext({\r\n\t\t\t\t\toneOfSet: true\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\tcase ']':\r\n\t\t\t\tif (!this.getContext().oneOfSet) {\r\n\t\t\t\t\tthrow new Error('\"]\" operator must be preceded by \"[\" operator')\r\n\t\t\t\t}\r\n\t\t\t\tthis.endContext()\r\n\t\t\t\tthis.getContext().instructions.push({\r\n\t\t\t\t\top: '[]',\r\n\t\t\t\t\targs: parseOneOfSet(before)\r\n\t\t\t\t})\r\n\t\t\t\tbreak\r\n\r\n\t\t\t/* istanbul ignore next */\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(`Unknown operator: ${operator}`)\r\n\t\t}\r\n\r\n\t\tif (rightPart) {\r\n\t\t\tthis.parsePattern(rightPart)\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction parseOneOfSet(pattern) {\r\n\tconst values = []\r\n\tlet i = 0\r\n\twhile (i < pattern.length) {\r\n\t\tif (pattern[i] === '-') {\r\n\t\t\tif (i === 0 || i === pattern.length - 1) {\r\n\t\t\t\tthrow new Error(`Couldn't parse a one-of set pattern: ${pattern}`)\r\n\t\t\t}\r\n\t\t\tconst prevValue = pattern[i - 1].charCodeAt(0) + 1\r\n\t\t\tconst nextValue = pattern[i + 1].charCodeAt(0) - 1\r\n\t\t\tlet value = prevValue\r\n\t\t\twhile (value <= nextValue) {\r\n\t\t\t\tvalues.push(String.fromCharCode(value))\r\n\t\t\t\tvalue++\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tvalues.push(pattern[i])\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn values\r\n}\r\n\r\nconst ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/\r\n\r\nconst OPERATOR = new RegExp(\r\n\t// any of:\r\n\t'(' +\r\n\t\t// or operator\r\n\t\t'\\\\|' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group start\r\n\t\t'\\\\(\\\\?\\\\:' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// or group end\r\n\t\t'\\\\)' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set start\r\n\t\t'\\\\[' +\r\n\t\t// or\r\n\t\t'|' +\r\n\t\t// one-of set end\r\n\t\t'\\\\]' +\r\n\t')'\r\n)\r\n\r\nfunction expandSingleElementArray(array) {\r\n\tif (array.length === 1) {\r\n\t\treturn array[0]\r\n\t}\r\n\treturn array\r\n}","import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\n\r\nexport default function formatCompleteNumber(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tconst matcher = new RegExp(`^(?:${format.pattern()})$`)\r\n\tif (matcher.test(state.nationalSignificantNumber)) {\r\n\t\treturn formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(\r\n\t\t\tstate,\r\n\t\t\tformat,\r\n\t\t\t{\r\n\t\t\t\tmetadata,\r\n\t\t\t\tshouldTryNationalPrefixFormattingRule,\r\n\t\t\t\tgetSeparatorAfterNationalPrefix\r\n\t\t\t}\r\n\t\t)\r\n\t}\r\n}\r\n\r\nexport function canFormatCompleteNumber(nationalSignificantNumber, metadata) {\r\n\treturn checkNumberLength(nationalSignificantNumber, metadata) === 'IS_POSSIBLE'\r\n}\r\n\r\nfunction formatNationalNumberWithAndWithoutNationalPrefixFormattingRule(state, format, {\r\n\tmetadata,\r\n\tshouldTryNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\t// `format` has already been checked for `nationalPrefix` requirement.\r\n\r\n\tconst {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode\r\n\t} = state\r\n\r\n\t// Format the number with using `national_prefix_formatting_rule`.\r\n\t// If the resulting formatted number is a valid formatted number, then return it.\r\n\t//\r\n\t// Google's AsYouType formatter is different in a way that it doesn't try\r\n\t// to format using the \"national prefix formatting rule\", and instead it\r\n\t// simply prepends a national prefix followed by a \" \" character.\r\n\t// This code does that too, but as a fallback.\r\n\t// The reason is that \"national prefix formatting rule\" may use parentheses,\r\n\t// which wouldn't be included has it used the simpler Google's way.\r\n\t//\r\n\tif (shouldTryNationalPrefixFormattingRule(format)) {\r\n\t\tconst formattedNumber = formatNationalNumber(state, format, {\r\n\t\t\tuseNationalPrefixFormattingRule: true,\r\n\t\t\tgetSeparatorAfterNationalPrefix,\r\n\t\t\tmetadata\r\n\t\t})\r\n\t\tif (formattedNumber) {\r\n\t\t\treturn formattedNumber\r\n\t\t}\r\n\t}\r\n\r\n\t// Format the number without using `national_prefix_formatting_rule`.\r\n\treturn formatNationalNumber(state, format, {\r\n\t\tuseNationalPrefixFormattingRule: false,\r\n\t\tgetSeparatorAfterNationalPrefix,\r\n\t\tmetadata\r\n\t})\r\n}\r\n\r\nfunction formatNationalNumber(state, format, {\r\n\tmetadata,\r\n\tuseNationalPrefixFormattingRule,\r\n\tgetSeparatorAfterNationalPrefix\r\n}) {\r\n\tlet formattedNationalNumber = formatNationalNumberUsingFormat(\r\n\t\tstate.nationalSignificantNumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tcarrierCode: state.carrierCode,\r\n\t\t\tuseInternationalFormat: state.international,\r\n\t\t\twithNationalPrefix: useNationalPrefixFormattingRule,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n\tif (!useNationalPrefixFormattingRule) {\r\n\t\tif (state.nationalPrefix) {\r\n\t\t\t// If a national prefix was extracted, then just prepend it,\r\n\t\t\t// followed by a \" \" character.\r\n\t\t\tformattedNationalNumber = state.nationalPrefix +\r\n\t\t\t\tgetSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t} else if (state.complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\tformattedNationalNumber = state.complexPrefixBeforeNationalSignificantNumber +\r\n\t\t\t\t' ' +\r\n\t\t\t\tformattedNationalNumber\r\n\t\t}\r\n\t}\r\n\tif (isValidFormattedNationalNumber(formattedNationalNumber, state)) {\r\n\t\treturn formattedNationalNumber\r\n\t}\r\n}\r\n\r\n// Check that the formatted phone number contains exactly\r\n// the same digits that have been input by the user.\r\n// For example, when \"0111523456789\" is input for `AR` country,\r\n// the extracted `this.nationalSignificantNumber` is \"91123456789\",\r\n// which means that the national part of `this.digits` isn't simply equal to\r\n// `this.nationalPrefix` + `this.nationalSignificantNumber`.\r\n//\r\n// Also, a `format` can add extra digits to the `this.nationalSignificantNumber`\r\n// being formatted via `metadata[country].national_prefix_transform_rule`.\r\n// For example, for `VI` country, it prepends `340` to the national number,\r\n// and if this check hasn't been implemented, then there would be a bug\r\n// when `340` \"area coude\" is \"duplicated\" during input for `VI` country:\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/318\r\n//\r\n// So, all these \"gotchas\" are filtered out.\r\n//\r\n// In the original Google's code, the comments say:\r\n// \"Check that we didn't remove nor add any extra digits when we matched\r\n// this formatting pattern. This usually happens after we entered the last\r\n// digit during AYTF. Eg: In case of MX, we swallow mobile token (1) when\r\n// formatted but AYTF should retain all the number entered and not change\r\n// in order to match a format (of same leading digits and length) display\r\n// in that way.\"\r\n// \"If it's the same (i.e entered number and format is same), then it's\r\n// safe to return this in formatted number as nothing is lost / added.\"\r\n// Otherwise, don't use this format.\r\n// https://github.com/google/libphonenumber/commit/3e7c1f04f5e7200f87fb131e6f85c6e99d60f510#diff-9149457fa9f5d608a11bb975c6ef4bc5\r\n// https://github.com/google/libphonenumber/commit/3ac88c7106e7dcb553bcc794b15f19185928a1c6#diff-2dcb77e833422ee304da348b905cde0b\r\n//\r\nfunction isValidFormattedNationalNumber(formattedNationalNumber, state) {\r\n\treturn parseDigits(formattedNationalNumber) === state.getNationalDigits()\r\n}","import {\r\n\tDIGIT_PLACEHOLDER,\r\n\tcountOccurences,\r\n\trepeat,\r\n\tcutAndStripNonPairedParens,\r\n\tcloseNonPairedParens,\r\n\tstripNonPairedParens,\r\n\tpopulateTemplateWithDigits\r\n} from './AsYouTypeFormatter.util.js'\r\n\r\nimport formatCompleteNumber, {\r\n\tcanFormatCompleteNumber\r\n} from './AsYouTypeFormatter.complete.js'\r\n\r\nimport PatternMatcher from './AsYouTypeFormatter.PatternMatcher.js'\r\n\r\nimport parseDigits from './helpers/parseDigits.js'\r\nexport { DIGIT_PLACEHOLDER } from './AsYouTypeFormatter.util.js'\r\nimport { FIRST_GROUP_PATTERN } from './helpers/formatNationalNumberUsingFormat.js'\r\nimport { VALID_PUNCTUATION } from './constants.js'\r\nimport applyInternationalSeparatorStyle from './helpers/applyInternationalSeparatorStyle.js'\r\n\r\n// Used in phone number format template creation.\r\n// Could be any digit, I guess.\r\nconst DUMMY_DIGIT = '9'\r\n// I don't know why is it exactly `15`\r\nconst LONGEST_NATIONAL_PHONE_NUMBER_LENGTH = 15\r\n// Create a phone number consisting only of the digit 9 that matches the\r\n// `number_pattern` by applying the pattern to the \"longest phone number\" string.\r\nconst LONGEST_DUMMY_PHONE_NUMBER = repeat(DUMMY_DIGIT, LONGEST_NATIONAL_PHONE_NUMBER_LENGTH)\r\n\r\n// A set of characters that, if found in a national prefix formatting rules, are an indicator to\r\n// us that we should separate the national prefix from the number when formatting.\r\nconst NATIONAL_PREFIX_SEPARATORS_PATTERN = /[- ]/\r\n\r\n// Deprecated: Google has removed some formatting pattern related code from their repo.\r\n// https://github.com/googlei18n/libphonenumber/commit/a395b4fef3caf57c4bc5f082e1152a4d2bd0ba4c\r\n// \"We no longer have numbers in formatting matching patterns, only \\d.\"\r\n// Because this library supports generating custom metadata\r\n// some users may still be using old metadata so the relevant\r\n// code seems to stay until some next major version update.\r\nconst SUPPORT_LEGACY_FORMATTING_PATTERNS = true\r\n\r\n// A pattern that is used to match character classes in regular expressions.\r\n// An example of a character class is \"[1-4]\".\r\nconst CREATE_CHARACTER_CLASS_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\[([^\\[\\]])*\\]/g)\r\n\r\n// Any digit in a regular expression that actually denotes a digit. For\r\n// example, in the regular expression \"80[0-2]\\d{6,10}\", the first 2 digits\r\n// (8 and 0) are standalone digits, but the rest are not.\r\n// Two look-aheads are needed because the number following \\\\d could be a\r\n// two-digit number, since the phone number can be as long as 15 digits.\r\nconst CREATE_STANDALONE_DIGIT_PATTERN = SUPPORT_LEGACY_FORMATTING_PATTERNS && (() => /\\d(?=[^,}][^,}])/g)\r\n\r\n// A regular expression that is used to determine if a `format` is\r\n// suitable to be used in the \"as you type formatter\".\r\n// A `format` is suitable when the resulting formatted number has\r\n// the same digits as the user has entered.\r\n//\r\n// In the simplest case, that would mean that the format\r\n// doesn't add any additional digits when formatting a number.\r\n// Google says that it also shouldn't add \"star\" (`*`) characters,\r\n// like it does in some Israeli formats.\r\n// Such basic format would only contain \"valid punctuation\"\r\n// and \"captured group\" identifiers ($1, $2, etc).\r\n//\r\n// An example of a format that adds additional digits:\r\n//\r\n// Country: `AR` (Argentina).\r\n// Format:\r\n// {\r\n// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n// \"leading_digits_patterns\": [\"91\"],\r\n// \"national_prefix_formatting_rule\": \"0$1\",\r\n// \"format\": \"$2 15-$3-$4\",\r\n// \"international_format\": \"$1 $2 $3-$4\"\r\n// }\r\n//\r\n// In the format above, the `format` adds `15` to the digits when formatting a number.\r\n// A sidenote: this format actually is suitable because `national_prefix_for_parsing`\r\n// has previously removed `15` from a national number, so re-adding `15` in `format`\r\n// doesn't actually result in any extra digits added to user's input.\r\n// But verifying that would be a complex procedure, so the code chooses a simpler path:\r\n// it simply filters out all `format`s that contain anything but \"captured group\" ids.\r\n//\r\n// This regular expression is called `ELIGIBLE_FORMAT_PATTERN` in Google's\r\n// `libphonenumber` code.\r\n//\r\nconst NON_ALTERING_FORMAT_REG_EXP = new RegExp(\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t// Google developers say:\r\n\t// \"We require that the first matching group is present in the\r\n\t// output pattern to ensure no data is lost while formatting.\"\r\n\t'\\\\$1' +\r\n\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t'(\\\\$\\\\d[' + VALID_PUNCTUATION + ']*)*' +\r\n\t'$'\r\n)\r\n\r\n// This is the minimum length of the leading digits of a phone number\r\n// to guarantee the first \"leading digits pattern\" for a phone number format\r\n// to be preemptive.\r\nconst MIN_LEADING_DIGITS_LENGTH = 3\r\n\r\nexport default class AsYouTypeFormatter {\r\n\tconstructor({\r\n\t\tstate,\r\n\t\tmetadata\r\n\t}) {\r\n\t\tthis.metadata = metadata\r\n\t\tthis.resetFormat()\r\n\t}\r\n\r\n\tresetFormat() {\r\n\t\tthis.chosenFormat = undefined\r\n\t\tthis.template = undefined\r\n\t\tthis.nationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplate = undefined\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t}\r\n\r\n\treset(numberingPlan, state) {\r\n\t\tthis.resetFormat()\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.isNANP = numberingPlan.callingCode() === '1'\r\n\t\t\tthis.matchingFormats = numberingPlan.formats()\r\n\t\t\tif (state.nationalSignificantNumber) {\r\n\t\t\t\tthis.narrowDownMatchingFormats(state)\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.isNANP = undefined\r\n\t\t\tthis.matchingFormats = []\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats an updated phone number.\r\n\t * @param {string} nextDigits — Additional phone number digits.\r\n\t * @param {object} state — `AsYouType` state.\r\n\t * @return {[string]} Returns undefined if the updated phone number can't be formatted using any of the available formats.\r\n\t */\r\n\tformat(nextDigits, state) {\r\n\t\t// See if the phone number digits can be formatted as a complete phone number.\r\n\t\t// If not, use the results from `formatNationalNumberWithNextDigits()`,\r\n\t\t// which formats based on the chosen formatting pattern.\r\n\t\t//\r\n\t\t// Attempting to format complete phone number first is how it's done\r\n\t\t// in Google's `libphonenumber`, so this library just follows it.\r\n\t\t// Google's `libphonenumber` code doesn't explain in detail why does it\r\n\t\t// attempt to format digits as a complete phone number\r\n\t\t// instead of just going with a previoulsy (or newly) chosen `format`:\r\n\t\t//\r\n\t\t// \"Checks to see if there is an exact pattern match for these digits.\r\n\t\t// If so, we should use this instead of any other formatting template\r\n\t\t// whose leadingDigitsPattern also matches the input.\"\r\n\t\t//\r\n\t\tif (canFormatCompleteNumber(state.nationalSignificantNumber, this.metadata)) {\r\n\t\t\tfor (const format of this.matchingFormats) {\r\n\t\t\t\tconst formattedCompleteNumber = formatCompleteNumber(\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tformat,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tmetadata: this.metadata,\r\n\t\t\t\t\t\tshouldTryNationalPrefixFormattingRule: (format) => this.shouldTryNationalPrefixFormattingRule(format, {\r\n\t\t\t\t\t\t\tinternational: state.international,\r\n\t\t\t\t\t\t\tnationalPrefix: state.nationalPrefix\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tgetSeparatorAfterNationalPrefix: (format) => this.getSeparatorAfterNationalPrefix(format)\r\n\t\t\t\t\t}\r\n\t\t\t\t)\r\n\t\t\t\tif (formattedCompleteNumber) {\r\n\t\t\t\t\tthis.resetFormat()\r\n\t\t\t\t\tthis.chosenFormat = format\r\n\t\t\t\t\tthis.setNationalNumberTemplate(formattedCompleteNumber.replace(/\\d/g, DIGIT_PLACEHOLDER), state)\r\n\t\t\t\t\tthis.populatedNationalNumberTemplate = formattedCompleteNumber\r\n\t\t\t\t\t// With a new formatting template, the matched position\r\n\t\t\t\t\t// using the old template needs to be reset.\r\n\t\t\t\t\tthis.populatedNationalNumberTemplatePosition = this.template.lastIndexOf(DIGIT_PLACEHOLDER)\r\n\t\t\t\t\treturn formattedCompleteNumber\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Format the digits as a partial (incomplete) phone number\r\n\t\t// using the previously chosen formatting pattern (or a newly chosen one).\r\n\t\treturn this.formatNationalNumberWithNextDigits(nextDigits, state)\r\n\t}\r\n\r\n\t// Formats the next phone number digits.\r\n\tformatNationalNumberWithNextDigits(nextDigits, state) {\r\n\t\tconst previouslyChosenFormat = this.chosenFormat\r\n\r\n\t\t// Choose a format from the list of matching ones.\r\n\t\tconst newlyChosenFormat = this.chooseFormat(state)\r\n\r\n\t\tif (newlyChosenFormat) {\r\n\t\t\tif (newlyChosenFormat === previouslyChosenFormat) {\r\n\t\t\t\t// If it can format the next (current) digits\r\n\t\t\t\t// using the previously chosen phone number format\r\n\t\t\t\t// then return the updated formatted number.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(nextDigits)\r\n\t\t\t} else {\r\n\t\t\t\t// If a more appropriate phone number format\r\n\t\t\t\t// has been chosen for these \"leading digits\",\r\n\t\t\t\t// then re-format the national phone number part\r\n\t\t\t\t// using the newly selected format.\r\n\t\t\t\treturn this.formatNextNationalNumberDigits(state.getNationalDigits())\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tnarrowDownMatchingFormats({\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalPrefix,\r\n\t\tinternational\r\n\t}) {\r\n\t\tconst leadingDigits = nationalSignificantNumber\r\n\r\n\t\t// \"leading digits\" pattern list starts with a\r\n\t\t// \"leading digits\" pattern fitting a maximum of 3 leading digits.\r\n\t\t// So, after a user inputs 3 digits of a national (significant) phone number\r\n\t\t// this national (significant) number can already be formatted.\r\n\t\t// The next \"leading digits\" pattern is for 4 leading digits max,\r\n\t\t// and the \"leading digits\" pattern after it is for 5 leading digits max, etc.\r\n\r\n\t\t// This implementation is different from Google's\r\n\t\t// in that it searches for a fitting format\r\n\t\t// even if the user has entered less than\r\n\t\t// `MIN_LEADING_DIGITS_LENGTH` digits of a national number.\r\n\t\t// Because some leading digit patterns already match for a single first digit.\r\n\t\tlet leadingDigitsPatternIndex = leadingDigits.length - MIN_LEADING_DIGITS_LENGTH\r\n\t\tif (leadingDigitsPatternIndex < 0) {\r\n\t\t\tleadingDigitsPatternIndex = 0\r\n\t\t}\r\n\r\n\t\tthis.matchingFormats = this.matchingFormats.filter(\r\n\t\t\tformat => this.formatSuits(format, international, nationalPrefix)\r\n\t\t\t\t&& this.formatMatches(format, leadingDigits, leadingDigitsPatternIndex)\r\n\t\t)\r\n\r\n\t\t// If there was a phone number format chosen\r\n\t\t// and it no longer holds given the new leading digits then reset it.\r\n\t\t// The test for this `if` condition is marked as:\r\n\t\t// \"Reset a chosen format when it no longer holds given the new leading digits\".\r\n\t\t// To construct a valid test case for this one can find a country\r\n\t\t// in `PhoneNumberMetadata.xml` yielding one format for 3 `<leadingDigits>`\r\n\t\t// and yielding another format for 4 `<leadingDigits>` (Australia in this case).\r\n\t\tif (this.chosenFormat && this.matchingFormats.indexOf(this.chosenFormat) === -1) {\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t}\r\n\r\n\tformatSuits(format, international, nationalPrefix) {\r\n\t\t// When a prefix before a national (significant) number is\r\n\t\t// simply a national prefix, then it's parsed as `this.nationalPrefix`.\r\n\t\t// In more complex cases, a prefix before national (significant) number\r\n\t\t// could include a national prefix as well as some \"capturing groups\",\r\n\t\t// and in that case there's no info whether a national prefix has been parsed.\r\n\t\t// If national prefix is not used when formatting a phone number\r\n\t\t// using this format, but a national prefix has been entered by the user,\r\n\t\t// and was extracted, then discard such phone number format.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L175-L184\r\n\t\tif (nationalPrefix &&\r\n\t\t\t!format.usesNationalPrefix() &&\r\n\t\t\t// !format.domesticCarrierCodeFormattingRule() &&\r\n\t\t\t!format.nationalPrefixIsOptionalWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// If national prefix is mandatory for this phone number format\r\n\t\t// and there're no guarantees that a national prefix is present in user input\r\n\t\t// then discard this phone number format as not suitable.\r\n\t\t// In Google's \"AsYouType\" formatter code, the equivalent would be this part:\r\n\t\t// https://github.com/google/libphonenumber/blob/0a45cfd96e71cad8edb0e162a70fcc8bd9728933/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L185-L193\r\n\t\tif (!international &&\r\n\t\t\t!nationalPrefix &&\r\n\t\t\tformat.nationalPrefixIsMandatoryWhenFormattingInNationalFormat()) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\treturn true\r\n\t}\r\n\r\n\tformatMatches(format, leadingDigits, leadingDigitsPatternIndex) {\r\n\t\tconst leadingDigitsPatternsCount = format.leadingDigitsPatterns().length\r\n\r\n\t\t// If this format is not restricted to a certain\r\n\t\t// leading digits pattern then it fits.\r\n\t\t// The test case could be found by searching for \"leadingDigitsPatternsCount === 0\".\r\n\t\tif (leadingDigitsPatternsCount === 0) {\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\t// Start narrowing down the list of possible formats based on the leading digits.\r\n\t\t// (only previously matched formats take part in the narrowing down process)\r\n\r\n\t\t// `leading_digits_patterns` start with 3 digits min\r\n\t\t// and then go up from there one digit at a time.\r\n\t\tleadingDigitsPatternIndex = Math.min(leadingDigitsPatternIndex, leadingDigitsPatternsCount - 1)\r\n\t\tconst leadingDigitsPattern = format.leadingDigitsPatterns()[leadingDigitsPatternIndex]\r\n\r\n\t\t// Google imposes a requirement on the leading digits\r\n\t\t// to be minimum 3 digits long in order to be eligible\r\n\t\t// for checking those with a leading digits pattern.\r\n\t\t//\r\n\t\t// Since `leading_digits_patterns` start with 3 digits min,\r\n\t\t// Google's original `libphonenumber` library only starts\r\n\t\t// excluding any non-matching formats only when the\r\n\t\t// national number entered so far is at least 3 digits long,\r\n\t\t// otherwise format matching would give false negatives.\r\n\t\t//\r\n\t\t// For example, when the digits entered so far are `2`\r\n\t\t// and the leading digits pattern is `21` –\r\n\t\t// it's quite obvious in this case that the format could be the one\r\n\t\t// but due to the absence of further digits it would give false negative.\r\n\t\t//\r\n\t\t// Also, `leading_digits_patterns` doesn't always correspond to a single\r\n\t\t// digits count. For example, `60|8` pattern would already match `8`\r\n\t\t// but the `60` part would require having at least two leading digits,\r\n\t\t// so the whole pattern would require inputting two digits first in order to\r\n\t\t// decide on whether it matches the input, even when the input is \"80\".\r\n\t\t//\r\n\t\t// This library — `libphonenumber-js` — allows filtering by `leading_digits_patterns`\r\n\t\t// even when there's only 1 or 2 digits of the national (significant) number.\r\n\t\t// To do that, it uses a non-strict pattern matcher written specifically for that.\r\n\t\t//\r\n\t\tif (leadingDigits.length < MIN_LEADING_DIGITS_LENGTH) {\r\n\t\t\t// Before leading digits < 3 matching was implemented:\r\n\t\t\t// return true\r\n\t\t\t//\r\n\t\t\t// After leading digits < 3 matching was implemented:\r\n\t\t\ttry {\r\n\t\t\t\treturn new PatternMatcher(leadingDigitsPattern).match(leadingDigits, { allowOverflow: true }) !== undefined\r\n\t\t\t} catch (error) /* istanbul ignore next */ {\r\n\t\t\t\t// There's a slight possibility that there could be some undiscovered bug\r\n\t\t\t\t// in the pattern matcher code. Since the \"leading digits < 3 matching\"\r\n\t\t\t\t// feature is not \"essential\" for operation, it can fall back to the old way\r\n\t\t\t\t// in case of any issues rather than halting the application's execution.\r\n\t\t\t\tconsole.error(error)\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If at least `MIN_LEADING_DIGITS_LENGTH` digits of a national number are\r\n\t\t// available then use the usual regular expression matching.\r\n\t\t//\r\n\t\t// The whole pattern is wrapped in round brackets (`()`) because\r\n\t\t// the pattern can use \"or\" operator (`|`) at the top level of the pattern.\r\n\t\t//\r\n\t\treturn new RegExp(`^(${leadingDigitsPattern})`).test(leadingDigits)\r\n\t}\r\n\r\n\tgetFormatFormat(format, international) {\r\n\t\treturn international ? format.internationalFormat() : format.format()\r\n\t}\r\n\r\n\tchooseFormat(state) {\r\n\t\t// When there are multiple available formats, the formatter uses the first\r\n\t\t// format where a formatting template could be created.\r\n\t\t//\r\n\t\t// For some weird reason, `istanbul` says \"else path not taken\"\r\n\t\t// for the `for of` line below. Supposedly that means that\r\n\t\t// the loop doesn't ever go over the last element in the list.\r\n\t\t// That's true because there always is `this.chosenFormat`\r\n\t\t// when `this.matchingFormats` is non-empty.\r\n\t\t// And, for some weird reason, it doesn't think that the case\r\n\t\t// with empty `this.matchingFormats` qualifies for a valid \"else\" path.\r\n\t\t// So simply muting this `istanbul` warning.\r\n\t\t// It doesn't skip the contents of the `for of` loop,\r\n\t\t// it just skips the `for of` line.\r\n\t\t//\r\n\t\t/* istanbul ignore next */\r\n\t\tfor (const format of this.matchingFormats.slice()) {\r\n\t\t\t// If this format is currently being used\r\n\t\t\t// and is still suitable, then stick to it.\r\n\t\t\tif (this.chosenFormat === format) {\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\t// Sometimes, a formatting rule inserts additional digits in a phone number,\r\n\t\t\t// and \"as you type\" formatter can't do that: it should only use the digits\r\n\t\t\t// that the user has input.\r\n\t\t\t//\r\n\t\t\t// For example, in Argentina, there's a format for mobile phone numbers:\r\n\t\t\t//\r\n\t\t\t// {\r\n\t\t\t// \"pattern\": \"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\r\n\t\t\t// \"leading_digits_patterns\": [\"91\"],\r\n\t\t\t// \"national_prefix_formatting_rule\": \"0$1\",\r\n\t\t\t// \"format\": \"$2 15-$3-$4\",\r\n\t\t\t// \"international_format\": \"$1 $2 $3-$4\"\r\n\t\t\t// }\r\n\t\t\t//\r\n\t\t\t// In that format, `international_format` is used instead of `format`\r\n\t\t\t// because `format` inserts `15` in the formatted number,\r\n\t\t\t// and `AsYouType` formatter should only use the digits\r\n\t\t\t// the user has actually input, without adding any extra digits.\r\n\t\t\t// In this case, it wouldn't make a difference, because the `15`\r\n\t\t\t// is first stripped when applying `national_prefix_for_parsing`\r\n\t\t\t// and then re-added when using `format`, so in reality it doesn't\r\n\t\t\t// add any new digits to the number, but to detect that, the code\r\n\t\t\t// would have to be more complex: it would have to try formatting\r\n\t\t\t// the digits using the format and then see if any digits have\r\n\t\t\t// actually been added or removed, and then, every time a new digit\r\n\t\t\t// is input, it should re-check whether the chosen format doesn't\r\n\t\t\t// alter the digits.\r\n\t\t\t//\r\n\t\t\t// Google's code doesn't go that far, and so does this library:\r\n\t\t\t// it simply requires that a `format` doesn't add any additonal\r\n\t\t\t// digits to user's input.\r\n\t\t\t//\r\n\t\t\t// Also, people in general should move from inputting phone numbers\r\n\t\t\t// in national format (possibly with national prefixes)\r\n\t\t\t// and use international phone number format instead:\r\n\t\t\t// it's a logical thing in the modern age of mobile phones,\r\n\t\t\t// globalization and the internet.\r\n\t\t\t//\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (!NON_ALTERING_FORMAT_REG_EXP.test(this.getFormatFormat(format, state.international))) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tif (!this.createTemplateForFormat(format, state)) {\r\n\t\t\t\t// Remove the format if it can't generate a template.\r\n\t\t\t\tthis.matchingFormats = this.matchingFormats.filter(_ => _ !== format)\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t\tthis.chosenFormat = format\r\n\t\t\tbreak\r\n\t\t}\r\n\t\tif (!this.chosenFormat) {\r\n\t\t\t// No format matches the national (significant) phone number.\r\n\t\t\tthis.resetFormat()\r\n\t\t}\r\n\t\treturn this.chosenFormat\r\n\t}\r\n\r\n\tcreateTemplateForFormat(format, state) {\r\n\t\t// The formatter doesn't format numbers when numberPattern contains '|', e.g.\r\n\t\t// (20|3)\\d{4}. In those cases we quickly return.\r\n\t\t// (Though there's no such format in current metadata)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS && format.pattern().indexOf('|') >= 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Get formatting template for this phone number format\r\n\t\tconst template = this.getTemplateForFormat(format, state)\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (template) {\r\n\t\t\tthis.setNationalNumberTemplate(template, state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tgetSeparatorAfterNationalPrefix(format) {\r\n\t\t// `US` metadata doesn't have a `national_prefix_formatting_rule`,\r\n\t\t// so the `if` condition below doesn't apply to `US`,\r\n\t\t// but in reality there shoudl be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\t// So `US` national prefix separator is a \"special\" \"hardcoded\" case.\r\n\t\tif (this.isNANP) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// If a `format` has a `national_prefix_formatting_rule`\r\n\t\t// and that rule has a separator after a national prefix,\r\n\t\t// then it means that there should be a separator\r\n\t\t// between a national prefix and a national (significant) number.\r\n\t\tif (format &&\r\n\t\t\tformat.nationalPrefixFormattingRule() &&\r\n\t\t\tNATIONAL_PREFIX_SEPARATORS_PATTERN.test(format.nationalPrefixFormattingRule())) {\r\n\t\t\treturn ' '\r\n\t\t}\r\n\t\t// At this point, there seems to be no clear evidence that\r\n\t\t// there should be a separator between a national prefix\r\n\t\t// and a national (significant) number. So don't insert one.\r\n\t\treturn ''\r\n\t}\r\n\r\n\tgetInternationalPrefixBeforeCountryCallingCode({ IDDPrefix, missingPlus }, options) {\r\n\t\tif (IDDPrefix) {\r\n\t\t\treturn options && options.spacing === false ? IDDPrefix : IDDPrefix + ' '\r\n\t\t}\r\n\t\tif (missingPlus) {\r\n\t\t\treturn ''\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\r\n\tgetTemplate(state) {\r\n\t\tif (!this.template) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// `this.template` holds the template for a \"complete\" phone number.\r\n\t\t// The currently entered phone number is most likely not \"complete\",\r\n\t\t// so trim all non-populated digits.\r\n\t\tlet index = -1\r\n\t\tlet i = 0\r\n\t\tconst internationalPrefix = state.international ? this.getInternationalPrefixBeforeCountryCallingCode(state, { spacing: false }) : ''\r\n\t\twhile (i < internationalPrefix.length + state.getDigitsWithoutInternationalPrefix().length) {\r\n\t\t\tindex = this.template.indexOf(DIGIT_PLACEHOLDER, index + 1)\r\n\t\t\ti++\r\n\t\t}\r\n\t\treturn cutAndStripNonPairedParens(this.template, index + 1)\r\n\t}\r\n\r\n\tsetNationalNumberTemplate(template, state) {\r\n\t\tthis.nationalNumberTemplate = template\r\n\t\tthis.populatedNationalNumberTemplate = template\r\n\t\t// With a new formatting template, the matched position\r\n\t\t// using the old template needs to be reset.\r\n\t\tthis.populatedNationalNumberTemplatePosition = -1\r\n\t\t// For convenience, the public `.template` property\r\n\t\t// contains the whole international number\r\n\t\t// if the phone number being input is international:\r\n\t\t// 'x' for the '+' sign, 'x'es for the country phone code,\r\n\t\t// a spacebar and then the template for the formatted national number.\r\n\t\tif (state.international) {\r\n\t\t\tthis.template =\r\n\t\t\t\tthis.getInternationalPrefixBeforeCountryCallingCode(state).replace(/[\\d\\+]/g, DIGIT_PLACEHOLDER) +\r\n\t\t\t\trepeat(DIGIT_PLACEHOLDER, state.callingCode.length) +\r\n\t\t\t\t' ' +\r\n\t\t\t\ttemplate\r\n\t\t} else {\r\n\t\t\tthis.template = template\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates formatting template for a national phone number,\r\n\t * optionally containing a national prefix, for a format.\r\n\t * @param {Format} format\r\n\t * @param {string} nationalPrefix\r\n\t * @return {string}\r\n\t */\r\n\tgetTemplateForFormat(format, {\r\n\t\tnationalSignificantNumber,\r\n\t\tinternational,\r\n\t\tnationalPrefix,\r\n\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t}) {\r\n\t\tlet pattern = format.pattern()\r\n\r\n\t\t/* istanbul ignore else */\r\n\t\tif (SUPPORT_LEGACY_FORMATTING_PATTERNS) {\r\n\t\t\tpattern = pattern\r\n\t\t\t\t// Replace anything in the form of [..] with \\d\r\n\t\t\t\t.replace(CREATE_CHARACTER_CLASS_PATTERN(), '\\\\d')\r\n\t\t\t\t// Replace any standalone digit (not the one in `{}`) with \\d\r\n\t\t\t\t.replace(CREATE_STANDALONE_DIGIT_PATTERN(), '\\\\d')\r\n\t\t}\r\n\r\n\t\t// Generate a dummy national number (consisting of `9`s)\r\n\t\t// that fits this format's `pattern`.\r\n\t\t//\r\n\t\t// This match will always succeed,\r\n\t\t// because the \"longest dummy phone number\"\r\n\t\t// has enough length to accomodate any possible\r\n\t\t// national phone number format pattern.\r\n\t\t//\r\n\t\tlet digits = LONGEST_DUMMY_PHONE_NUMBER.match(pattern)[0]\r\n\r\n\t\t// If the national number entered is too long\r\n\t\t// for any phone number format, then abort.\r\n\t\tif (nationalSignificantNumber.length > digits.length) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Get a formatting template which can be used to efficiently format\r\n\t\t// a partial number where digits are added one by one.\r\n\r\n\t\t// Below `strictPattern` is used for the\r\n\t\t// regular expression (with `^` and `$`).\r\n\t\t// This wasn't originally in Google's `libphonenumber`\r\n\t\t// and I guess they don't really need it\r\n\t\t// because they're not using \"templates\" to format phone numbers\r\n\t\t// but I added `strictPattern` after encountering\r\n\t\t// South Korean phone number formatting bug.\r\n\t\t//\r\n\t\t// Non-strict regular expression bug demonstration:\r\n\t\t//\r\n\t\t// this.nationalSignificantNumber : `111111111` (9 digits)\r\n\t\t//\r\n\t\t// pattern : (\\d{2})(\\d{3,4})(\\d{4})\r\n\t\t// format : `$1 $2 $3`\r\n\t\t// digits : `9999999999` (10 digits)\r\n\t\t//\r\n\t\t// '9999999999'.replace(new RegExp(/(\\d{2})(\\d{3,4})(\\d{4})/g), '$1 $2 $3') = \"99 9999 9999\"\r\n\t\t//\r\n\t\t// template : xx xxxx xxxx\r\n\t\t//\r\n\t\t// But the correct template in this case is `xx xxx xxxx`.\r\n\t\t// The template was generated incorrectly because of the\r\n\t\t// `{3,4}` variability in the `pattern`.\r\n\t\t//\r\n\t\t// The fix is, if `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then `this.nationalSignificantNumber`\r\n\t\t// is used instead of `digits`.\r\n\r\n\t\tconst strictPattern = new RegExp('^' + pattern + '$')\r\n\t\tconst nationalNumberDummyDigits = nationalSignificantNumber.replace(/\\d/g, DUMMY_DIGIT)\r\n\r\n\t\t// If `this.nationalSignificantNumber` has already sufficient length\r\n\t\t// to satisfy the `pattern` completely then use it\r\n\t\t// instead of `digits`.\r\n\t\tif (strictPattern.test(nationalNumberDummyDigits)) {\r\n\t\t\tdigits = nationalNumberDummyDigits\r\n\t\t}\r\n\r\n\t\tlet numberFormat = this.getFormatFormat(format, international)\r\n\t\tlet nationalPrefixIncludedInTemplate\r\n\r\n\t\t// If a user did input a national prefix (and that's guaranteed),\r\n\t\t// and if a `format` does have a national prefix formatting rule,\r\n\t\t// then see if that national prefix formatting rule\r\n\t\t// prepends exactly the same national prefix the user has input.\r\n\t\t// If that's the case, then use the `format` with the national prefix formatting rule.\r\n\t\t// Otherwise, use the `format` without the national prefix formatting rule,\r\n\t\t// and prepend a national prefix manually to it.\r\n\t\tif (this.shouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix })) {\r\n\t\t\tconst numberFormatWithNationalPrefix = numberFormat.replace(\r\n\t\t\t\tFIRST_GROUP_PATTERN,\r\n\t\t\t\tformat.nationalPrefixFormattingRule()\r\n\t\t\t)\r\n\t\t\t// If `national_prefix_formatting_rule` of a `format` simply prepends\r\n\t\t\t// national prefix at the start of a national (significant) number,\r\n\t\t\t// then such formatting can be used with `AsYouType` formatter.\r\n\t\t\t// There seems to be no `else` case: everywhere in metadata,\r\n\t\t\t// national prefix formatting rule is national prefix + $1,\r\n\t\t\t// or `($1)`, in which case such format isn't even considered\r\n\t\t\t// when the user has input a national prefix.\r\n\t\t\t/* istanbul ignore else */\r\n\t\t\tif (parseDigits(format.nationalPrefixFormattingRule()) === (nationalPrefix || '') + parseDigits('$1')) {\r\n\t\t\t\tnumberFormat = numberFormatWithNationalPrefix\r\n\t\t\t\tnationalPrefixIncludedInTemplate = true\r\n\t\t\t\t// Replace all digits of the national prefix in the formatting template\r\n\t\t\t\t// with `DIGIT_PLACEHOLDER`s.\r\n\t\t\t\tif (nationalPrefix) {\r\n\t\t\t\t\tlet i = nationalPrefix.length\r\n\t\t\t\t\twhile (i > 0) {\r\n\t\t\t\t\t\tnumberFormat = numberFormat.replace(/\\d/, DIGIT_PLACEHOLDER)\r\n\t\t\t\t\t\ti--\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Generate formatting template for this phone number format.\r\n\t\tlet template = digits\r\n\t\t\t// Format the dummy phone number according to the format.\r\n\t\t\t.replace(new RegExp(pattern), numberFormat)\r\n\t\t\t// Replace each dummy digit with a DIGIT_PLACEHOLDER.\r\n\t\t\t.replace(new RegExp(DUMMY_DIGIT, 'g'), DIGIT_PLACEHOLDER)\r\n\r\n\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t// as just a basic national prefix, then just prepend such prefix\r\n\t\t// before the national (significant) number, optionally spacing\r\n\t\t// the two with a whitespace.\r\n\t\tif (!nationalPrefixIncludedInTemplate) {\r\n\t\t\tif (complexPrefixBeforeNationalSignificantNumber) {\r\n\t\t\t\t// Prepend the prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, complexPrefixBeforeNationalSignificantNumber.length) +\r\n\t\t\t\t\t' ' +\r\n\t\t\t\t\ttemplate\r\n\t\t\t} else if (nationalPrefix) {\r\n\t\t\t\t// Prepend national prefix to the template manually.\r\n\t\t\t\ttemplate = repeat(DIGIT_PLACEHOLDER, nationalPrefix.length) +\r\n\t\t\t\t\tthis.getSeparatorAfterNationalPrefix(format) +\r\n\t\t\t\t\ttemplate\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (international) {\r\n\t\t\ttemplate = applyInternationalSeparatorStyle(template)\r\n\t\t}\r\n\r\n\t\treturn template\r\n\t}\r\n\r\n\tformatNextNationalNumberDigits(digits) {\r\n\t\tconst result = populateTemplateWithDigits(\r\n\t\t\tthis.populatedNationalNumberTemplate,\r\n\t\t\tthis.populatedNationalNumberTemplatePosition,\r\n\t\t\tdigits\r\n\t\t)\r\n\r\n\t\tif (!result) {\r\n\t\t\t// Reset the format.\r\n\t\t\tthis.resetFormat()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.populatedNationalNumberTemplate = result[0]\r\n\t\tthis.populatedNationalNumberTemplatePosition = result[1]\r\n\r\n\t\t// Return the formatted phone number so far.\r\n\t\treturn cutAndStripNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\r\n\t\t// The old way which was good for `input-format` but is not so good\r\n\t\t// for `react-phone-number-input`'s default input (`InputBasic`).\r\n\t\t// return closeNonPairedParens(this.populatedNationalNumberTemplate, this.populatedNationalNumberTemplatePosition + 1)\r\n\t\t// \t.replace(new RegExp(DIGIT_PLACEHOLDER, 'g'), ' ')\r\n\t}\r\n\r\n\tshouldTryNationalPrefixFormattingRule(format, { international, nationalPrefix }) {\r\n\t\tif (format.nationalPrefixFormattingRule()) {\r\n\t\t\t// In some countries, `national_prefix_formatting_rule` is `($1)`,\r\n\t\t\t// so it applies even if the user hasn't input a national prefix.\r\n\t\t\t// `format.usesNationalPrefix()` detects such cases.\r\n\t\t\tconst usesNationalPrefix = format.usesNationalPrefix()\r\n\t\t\tif ((usesNationalPrefix && nationalPrefix) ||\r\n\t\t\t\t(!usesNationalPrefix && !international)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","// Should be the same as `DIGIT_PLACEHOLDER` in `libphonenumber-metadata-generator`.\r\nexport const DIGIT_PLACEHOLDER = 'x' // '\\u2008' (punctuation space)\r\nconst DIGIT_PLACEHOLDER_MATCHER = new RegExp(DIGIT_PLACEHOLDER)\r\n\r\n// Counts all occurences of a symbol in a string.\r\n// Unicode-unsafe (because using `.split()`).\r\nexport function countOccurences(symbol, string) {\r\n\tlet count = 0\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for counting brackets it is safe.\r\n\t// for (const character of string)\r\n\tfor (const character of string.split('')) {\r\n\t\tif (character === symbol) {\r\n\t\t\tcount++\r\n\t\t}\r\n\t}\r\n\treturn count\r\n}\r\n\r\n// Repeats a string (or a symbol) N times.\r\n// http://stackoverflow.com/questions/202605/repeat-string-javascript\r\nexport function repeat(string, times) {\r\n\tif (times < 1) {\r\n\t\treturn ''\r\n\t}\r\n\tlet result = ''\r\n\twhile (times > 1) {\r\n\t\tif (times & 1) {\r\n\t\t\tresult += string\r\n\t\t}\r\n\t\ttimes >>= 1\r\n\t\tstring += string\r\n\t}\r\n\treturn result + string\r\n}\r\n\r\nexport function cutAndStripNonPairedParens(string, cutBeforeIndex) {\r\n\tif (string[cutBeforeIndex] === ')') {\r\n\t\tcutBeforeIndex++\r\n\t}\r\n\treturn stripNonPairedParens(string.slice(0, cutBeforeIndex))\r\n}\r\n\r\nexport function closeNonPairedParens(template, cut_before) {\r\n\tconst retained_template = template.slice(0, cut_before)\r\n\tconst opening_braces = countOccurences('(', retained_template)\r\n\tconst closing_braces = countOccurences(')', retained_template)\r\n\tlet dangling_braces = opening_braces - closing_braces\r\n\twhile (dangling_braces > 0 && cut_before < template.length) {\r\n\t\tif (template[cut_before] === ')') {\r\n\t\t\tdangling_braces--\r\n\t\t}\r\n\t\tcut_before++\r\n\t}\r\n\treturn template.slice(0, cut_before)\r\n}\r\n\r\nexport function stripNonPairedParens(string) {\r\n\tconst dangling_braces =[]\r\n\tlet i = 0\r\n\twhile (i < string.length) {\r\n\t\tif (string[i] === '(') {\r\n\t\t\tdangling_braces.push(i)\r\n\t\t}\r\n\t\telse if (string[i] === ')') {\r\n\t\t\tdangling_braces.pop()\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\tlet start = 0\r\n\tlet cleared_string = ''\r\n\tdangling_braces.push(string.length)\r\n\tfor (const index of dangling_braces) {\r\n\t\tcleared_string += string.slice(start, index)\r\n\t\tstart = index + 1\r\n\t}\r\n\treturn cleared_string\r\n}\r\n\r\nexport function populateTemplateWithDigits(template, position, digits) {\r\n\t// Using `.split('')` to iterate through a string here\r\n\t// to avoid requiring `Symbol.iterator` polyfill.\r\n\t// `.split('')` is generally not safe for Unicode,\r\n\t// but in this particular case for `digits` it is safe.\r\n\t// for (const digit of digits)\r\n\tfor (const digit of digits.split('')) {\r\n\t\t// If there is room for more digits in current `template`,\r\n\t\t// then set the next digit in the `template`,\r\n\t\t// and return the formatted digits so far.\r\n\t\t// If more digits are entered than the current format could handle.\r\n\t\tif (template.slice(position + 1).search(DIGIT_PLACEHOLDER_MATCHER) < 0) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tposition = template.search(DIGIT_PLACEHOLDER_MATCHER)\r\n\t\ttemplate = template.replace(DIGIT_PLACEHOLDER_MATCHER, digit)\r\n\t}\r\n\treturn [template, position]\r\n}","import extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport extractNationalNumberFromPossiblyIncompleteNumber from './helpers/extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport parseDigits from './helpers/parseDigits.js'\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from './constants.js'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART =\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+'\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN = new RegExp('^' + VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART + '$', 'i')\r\n\r\nconst VALID_FORMATTED_PHONE_NUMBER_PART =\r\n\t'(?:' +\r\n\t\t'[' + PLUS_CHARS + ']' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']*' +\r\n\t\t'|' +\r\n\t\t'[' +\r\n\t\t\tVALID_PUNCTUATION +\r\n\t\t\tVALID_DIGITS +\r\n\t\t']+' +\r\n\t')'\r\n\r\nconst AFTER_PHONE_NUMBER_DIGITS_END_PATTERN = new RegExp(\r\n\t'[^' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']+' +\r\n\t'.*' +\r\n\t'$'\r\n)\r\n\r\n// Tests whether `national_prefix_for_parsing` could match\r\n// different national prefixes.\r\n// Matches anything that's not a digit or a square bracket.\r\nconst COMPLEX_NATIONAL_PREFIX = /[^\\d\\[\\]]/\r\n\r\nexport default class AsYouTypeParser {\r\n\tconstructor({\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata,\r\n\t\tonNationalSignificantNumberChange\r\n\t}) {\r\n\t\tthis.defaultCountry = defaultCountry\r\n\t\tthis.defaultCallingCode = defaultCallingCode\r\n\t\tthis.metadata = metadata\r\n\t\tthis.onNationalSignificantNumberChange = onNationalSignificantNumberChange\r\n\t}\r\n\r\n\tinput(text, state) {\r\n\t\tconst [formattedDigits, hasPlus] = extractFormattedDigitsAndPlus(text)\r\n\t\tconst digits = parseDigits(formattedDigits)\r\n\t\t// Checks for a special case: just a leading `+` has been entered.\r\n\t\tlet justLeadingPlus\r\n\t\tif (hasPlus) {\r\n\t\t\tif (!state.digits) {\r\n\t\t\t\tstate.startInternationalNumber()\r\n\t\t\t\tif (!digits) {\r\n\t\t\t\t\tjustLeadingPlus = true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (digits) {\r\n\t\t\tthis.inputDigits(digits, state)\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tdigits,\r\n\t\t\tjustLeadingPlus\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inputs \"next\" phone number digits.\r\n\t * @param {string} digits\r\n\t * @return {string} [formattedNumber] Formatted national phone number (if it can be formatted at this stage). Returning `undefined` means \"don't format the national phone number at this stage\".\r\n\t */\r\n\tinputDigits(nextDigits, state) {\r\n\t\tconst { digits } = state\r\n\t\tconst hasReceivedThreeLeadingDigits = digits.length < 3 && digits.length + nextDigits.length >= 3\r\n\r\n\t\t// Append phone number digits.\r\n\t\tstate.appendDigits(nextDigits)\r\n\r\n\t\t// Attempt to extract IDD prefix:\r\n\t\t// Some users input their phone number in international format,\r\n\t\t// but in an \"out-of-country\" dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers as soon as there're at least 3 digits.\r\n\t\t// Google's library attempts to extract IDD prefix at 3 digits,\r\n\t\t// so this library just copies that behavior.\r\n\t\t// I guess that's because the most commot IDD prefixes are\r\n\t\t// `00` (Europe) and `011` (US).\r\n\t\t// There exist really long IDD prefixes too:\r\n\t\t// for example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t// An IDD prefix is extracted here, and then every time when\r\n\t\t// there's a new digit and the number couldn't be formatted.\r\n\t\tif (hasReceivedThreeLeadingDigits) {\r\n\t\t\tthis.extractIddPrefix(state)\r\n\t\t}\r\n\r\n\t\tif (this.isWaitingForCountryCallingCode(state)) {\r\n\t\t\tif (!this.extractCountryCallingCode(state)) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tstate.appendNationalSignificantNumberDigits(nextDigits)\r\n\t\t}\r\n\r\n\t\t// If a phone number is being input in international format,\r\n\t\t// then it's not valid for it to have a national prefix.\r\n\t\t// Still, some people incorrectly input such numbers with a national prefix.\r\n\t\t// In such cases, only attempt to strip a national prefix if the number becomes too long.\r\n\t\t// (but that is done later, not here)\r\n\t\tif (!state.international) {\r\n\t\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisWaitingForCountryCallingCode({ international, callingCode }) {\r\n\t\treturn international && !callingCode\r\n\t}\r\n\r\n\t// Extracts a country calling code from a number\r\n\t// being entered in internatonal format.\r\n\textractCountryCallingCode(state) {\r\n\t\tconst { countryCallingCode, number } = extractCountryCallingCode(\r\n\t\t\t'+' + state.getDigitsWithoutInternationalPrefix(),\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (countryCallingCode) {\r\n\t\t\tstate.setCallingCode(countryCallingCode)\r\n\t\t\tstate.update({\r\n\t\t\t\tnationalSignificantNumber: number\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\treset(numberingPlan) {\r\n\t\tif (numberingPlan) {\r\n\t\t\tthis.hasSelectedNumberingPlan = true\r\n\t\t\tconst nationalPrefixForParsing = numberingPlan._nationalPrefixForParsing()\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = nationalPrefixForParsing && COMPLEX_NATIONAL_PREFIX.test(nationalPrefixForParsing)\r\n\t\t} else {\r\n\t\t\tthis.hasSelectedNumberingPlan = undefined\r\n\t\t\tthis.couldPossiblyExtractAnotherNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Extracts a national (significant) number from user input.\r\n\t * Google's library is different in that it only applies `national_prefix_for_parsing`\r\n\t * and doesn't apply `national_prefix_transform_rule` after that.\r\n\t * https://github.com/google/libphonenumber/blob/a3d70b0487875475e6ad659af404943211d26456/java/libphonenumber/src/com/google/i18n/phonenumbers/AsYouTypeFormatter.java#L539\r\n\t * @return {boolean} [extracted]\r\n\t */\r\n\textractNationalSignificantNumber(nationalDigits, setState) {\r\n\t\tif (!this.hasSelectedNumberingPlan) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\tif (nationalNumber === nationalDigits) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\t/**\r\n\t * In Google's code this function is called \"attempt to extract longer NDD\".\r\n\t * \"Some national prefixes are a substring of others\", they say.\r\n\t * @return {boolean} [result] — Returns `true` if extracting a national prefix produced different results from what they were.\r\n\t */\r\n\textractAnotherNationalSignificantNumber(nationalDigits, prevNationalSignificantNumber, setState) {\r\n\t\tif (!this.hasExtractedNationalSignificantNumber) {\r\n\t\t\treturn this.extractNationalSignificantNumber(nationalDigits, setState)\r\n\t\t}\r\n\t\tif (!this.couldPossiblyExtractAnotherNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tconst {\r\n\t\t\tnationalPrefix,\r\n\t\t\tnationalNumber,\r\n\t\t\tcarrierCode\r\n\t\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\t\tnationalDigits,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t\t// If a national prefix has been extracted previously,\r\n\t\t// then it's always extracted as additional digits are added.\r\n\t\t// That's assuming `extractNationalNumberFromPossiblyIncompleteNumber()`\r\n\t\t// doesn't do anything different from what it currently does.\r\n\t\t// So, just in case, here's this check, though it doesn't occur.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (nationalNumber === prevNationalSignificantNumber) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\tthis.onExtractedNationalNumber(\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tnationalDigits,\r\n\t\t\tsetState\r\n\t\t)\r\n\t\treturn true\r\n\t}\r\n\r\n\tonExtractedNationalNumber(\r\n\t\tnationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tnationalSignificantNumber,\r\n\t\tnationalDigits,\r\n\t\tsetState\r\n\t) {\r\n\t\tlet complexPrefixBeforeNationalSignificantNumber\r\n\t\tlet nationalSignificantNumberMatchesInput\r\n\t\t// This check also works with empty `this.nationalSignificantNumber`.\r\n\t\tconst nationalSignificantNumberIndex = nationalDigits.lastIndexOf(nationalSignificantNumber)\r\n\t\t// If the extracted national (significant) number is the\r\n\t\t// last substring of the `digits`, then it means that it hasn't been altered:\r\n\t\t// no digits have been removed from the national (significant) number\r\n\t\t// while applying `national_prefix_transform_rule`.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\tif (nationalSignificantNumberIndex >= 0 &&\r\n\t\t\tnationalSignificantNumberIndex === nationalDigits.length - nationalSignificantNumber.length) {\r\n\t\t\tnationalSignificantNumberMatchesInput = true\r\n\t\t\t// If a prefix of a national (significant) number is not as simple\r\n\t\t\t// as just a basic national prefix, then such prefix is stored in\r\n\t\t\t// `this.complexPrefixBeforeNationalSignificantNumber` property and will be\r\n\t\t\t// prepended \"as is\" to the national (significant) number to produce\r\n\t\t\t// a formatted result.\r\n\t\t\tconst prefixBeforeNationalNumber = nationalDigits.slice(0, nationalSignificantNumberIndex)\r\n\t\t\t// `prefixBeforeNationalNumber` is always non-empty,\r\n\t\t\t// because `onExtractedNationalNumber()` isn't called\r\n\t\t\t// when a national (significant) number hasn't been actually \"extracted\":\r\n\t\t\t// when a national (significant) number is equal to the national part of `digits`,\r\n\t\t\t// then `onExtractedNationalNumber()` doesn't get called.\r\n\t\t\tif (prefixBeforeNationalNumber !== nationalPrefix) {\r\n\t\t\t\tcomplexPrefixBeforeNationalSignificantNumber = prefixBeforeNationalNumber\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetState({\r\n\t\t\tnationalPrefix,\r\n\t\t\tcarrierCode,\r\n\t\t\tnationalSignificantNumber,\r\n\t\t\tnationalSignificantNumberMatchesInput,\r\n\t\t\tcomplexPrefixBeforeNationalSignificantNumber\r\n\t\t})\r\n\t\t// `onExtractedNationalNumber()` is only called when\r\n\t\t// the national (significant) number actually did change.\r\n\t\tthis.hasExtractedNationalSignificantNumber = true\r\n\t\tthis.onNationalSignificantNumberChange()\r\n\t}\r\n\r\n\treExtractNationalSignificantNumber(state) {\r\n\t\t// Attempt to extract a national prefix.\r\n\t\t//\r\n\t\t// Some people incorrectly input national prefix\r\n\t\t// in an international phone number.\r\n\t\t// For example, some people write British phone numbers as `+44(0)...`.\r\n\t\t//\r\n\t\t// Also, in some rare cases, it is valid for a national prefix\r\n\t\t// to be a part of an international phone number.\r\n\t\t// For example, mobile phone numbers in Mexico are supposed to be\r\n\t\t// dialled internationally using a `1` national prefix,\r\n\t\t// so the national prefix will be part of an international number.\r\n\t\t//\r\n\t\t// Quote from:\r\n\t\t// https://www.mexperience.com/dialing-cell-phones-in-mexico/\r\n\t\t//\r\n\t\t// \"Dialing a Mexican cell phone from abroad\r\n\t\t// When you are calling a cell phone number in Mexico from outside Mexico,\r\n\t\t// it’s necessary to dial an additional “1†after Mexico’s country code\r\n\t\t// (which is “52â€) and before the area code.\r\n\t\t// You also ignore the 045, and simply dial the area code and the\r\n\t\t// cell phone’s number.\r\n\t\t//\r\n\t\t// If you don’t add the “1â€, you’ll receive a recorded announcement\r\n\t\t// asking you to redial using it.\r\n\t\t//\r\n\t\t// For example, if you are calling from the USA to a cell phone\r\n\t\t// in Mexico City, you would dial +52 – 1 – 55 – 1234 5678.\r\n\t\t// (Note that this is different to calling a land line in Mexico City\r\n\t\t// from abroad, where the number dialed would be +52 – 55 – 1234 5678)\".\r\n\t\t//\r\n\t\t// Google's demo output:\r\n\t\t// https://libphonenumber.appspot.com/phonenumberparser?number=%2b5215512345678&country=MX\r\n\t\t//\r\n\t\tif (this.extractAnotherNationalSignificantNumber(\r\n\t\t\tstate.getNationalDigits(),\r\n\t\t\tstate.nationalSignificantNumber,\r\n\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// If no format matches the phone number, then it could be\r\n\t\t// \"a really long IDD\" (quote from a comment in Google's library).\r\n\t\t// An IDD prefix is first extracted when the user has entered at least 3 digits,\r\n\t\t// and then here — every time when there's a new digit and the number\r\n\t\t// couldn't be formatted.\r\n\t\t// For example, in Australia the default IDD prefix is `0011`,\r\n\t\t// and it could even be as long as `14880011`.\r\n\t\t//\r\n\t\t// Could also check `!hasReceivedThreeLeadingDigits` here\r\n\t\t// to filter out the case when this check duplicates the one\r\n\t\t// already performed when there're 3 leading digits,\r\n\t\t// but it's not a big deal, and in most cases there\r\n\t\t// will be a suitable `format` when there're 3 leading digits.\r\n\t\t//\r\n\t\tif (this.extractIddPrefix(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t\t// Google's AsYouType formatter supports sort of an \"autocorrection\" feature\r\n\t\t// when it \"autocorrects\" numbers that have been input for a country\r\n\t\t// with that country's calling code.\r\n\t\t// Such \"autocorrection\" feature looks weird, but different people have been requesting it:\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/375\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/316\r\n\t\tif (this.fixMissingPlus(state)) {\r\n\t\t\tthis.extractCallingCodeAndNationalSignificantNumber(state)\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\textractIddPrefix(state) {\r\n\t\t// An IDD prefix can't be present in a number written with a `+`.\r\n\t\t// Also, don't re-extract an IDD prefix if has already been extracted.\r\n\t\tconst {\r\n\t\t\tinternational,\r\n\t\t\tIDDPrefix,\r\n\t\t\tdigits,\r\n\t\t\tnationalSignificantNumber\r\n\t\t} = state\r\n\t\tif (international || IDDPrefix) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\t// Some users input their phone number in \"out-of-country\"\r\n\t\t// dialing format instead of using the leading `+`.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/185\r\n\t\t// Detect such numbers.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(\r\n\t\t\tdigits,\r\n\t\t\tthis.defaultCountry,\r\n\t\t\tthis.defaultCallingCode,\r\n\t\t\tthis.metadata.metadata\r\n\t\t)\r\n\t\tif (numberWithoutIDD !== undefined && numberWithoutIDD !== digits) {\r\n\t\t\t// If an IDD prefix was stripped then convert the IDD-prefixed number\r\n\t\t\t// to international number for subsequent parsing.\r\n\t\t\tstate.update({\r\n\t\t\t\tIDDPrefix: digits.slice(0, digits.length - numberWithoutIDD.length)\r\n\t\t\t})\r\n\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\tcountry: undefined,\r\n\t\t\t\tcallingCode: undefined\r\n\t\t\t})\r\n\t\t\treturn true\r\n\t\t}\r\n\t}\r\n\r\n\tfixMissingPlus(state) {\r\n\t\tif (!state.international) {\r\n\t\t\tconst {\r\n\t\t\t\tcountryCallingCode: newCallingCode,\r\n\t\t\t\tnumber\r\n\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\tstate.digits,\r\n\t\t\t\tthis.defaultCountry,\r\n\t\t\t\tthis.defaultCallingCode,\r\n\t\t\t\tthis.metadata.metadata\r\n\t\t\t)\r\n\t\t\tif (newCallingCode) {\r\n\t\t\t\tstate.update({\r\n\t\t\t\t\tmissingPlus: true\r\n\t\t\t\t})\r\n\t\t\t\tthis.startInternationalNumber(state, {\r\n\t\t\t\t\tcountry: state.country,\r\n\t\t\t\t\tcallingCode: newCallingCode\r\n\t\t\t\t})\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartInternationalNumber(state, { country, callingCode }) {\r\n\t\tstate.startInternationalNumber(country, callingCode)\r\n\t\t// If a national (significant) number has been extracted before, reset it.\r\n\t\tif (state.nationalSignificantNumber) {\r\n\t\t\tstate.resetNationalSignificantNumber()\r\n\t\t\tthis.onNationalSignificantNumberChange()\r\n\t\t\tthis.hasExtractedNationalSignificantNumber = undefined\r\n\t\t}\r\n\t}\r\n\r\n\textractCallingCodeAndNationalSignificantNumber(state) {\r\n\t\tif (this.extractCountryCallingCode(state)) {\r\n\t\t\t// `this.extractCallingCode()` is currently called when the number\r\n\t\t\t// couldn't be formatted during the standard procedure.\r\n\t\t\t// Normally, the national prefix would be re-extracted\r\n\t\t\t// for an international number if such number couldn't be formatted,\r\n\t\t\t// but since it's already not able to be formatted,\r\n\t\t\t// there won't be yet another retry, so also extract national prefix here.\r\n\t\t\tthis.extractNationalSignificantNumber(\r\n\t\t\t\tstate.getNationalDigits(),\r\n\t\t\t\t(stateUpdate) => state.update(stateUpdate)\r\n\t\t\t)\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number from text (if there's any).\r\n * @param {string} text\r\n * @return {string} [formattedPhoneNumber]\r\n */\r\nfunction extractFormattedPhoneNumber(text) {\r\n\t// Attempt to extract a possible number from the string passed in.\r\n\tconst startsAt = text.search(VALID_FORMATTED_PHONE_NUMBER_PART)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\t// Trim everything to the left of the phone number.\r\n\ttext = text.slice(startsAt)\r\n\t// Trim the `+`.\r\n\tlet hasPlus\r\n\tif (text[0] === '+') {\r\n\t\thasPlus = true\r\n\t\ttext = text.slice('+'.length)\r\n\t}\r\n\t// Trim everything to the right of the phone number.\r\n\ttext = text.replace(AFTER_PHONE_NUMBER_DIGITS_END_PATTERN, '')\r\n\t// Re-add the previously trimmed `+`.\r\n\tif (hasPlus) {\r\n\t\ttext = '+' + text\r\n\t}\r\n\treturn text\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nfunction _extractFormattedDigitsAndPlus(text) {\r\n\t// Extract a formatted phone number part from text.\r\n\tconst extractedNumber = extractFormattedPhoneNumber(text) || ''\r\n\t// Trim a `+`.\r\n\tif (extractedNumber[0] === '+') {\r\n\t\treturn [extractedNumber.slice('+'.length), true]\r\n\t}\r\n\treturn [extractedNumber]\r\n}\r\n\r\n/**\r\n * Extracts formatted phone number digits (and a `+`) from text (if there're any).\r\n * @param {string} text\r\n * @return {any[]}\r\n */\r\nexport function extractFormattedDigitsAndPlus(text) {\r\n\tlet [formattedDigits, hasPlus] = _extractFormattedDigitsAndPlus(text)\r\n\t// If the extracted phone number part\r\n\t// can possibly be a part of some valid phone number\r\n\t// then parse phone number characters from a formatted phone number.\r\n\tif (!VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN.test(formattedDigits)) {\r\n\t\tformattedDigits = ''\r\n\t}\r\n\treturn [formattedDigits, hasPlus]\r\n}","export default class AsYouTypeState {\r\n\tconstructor({ onCountryChange, onCallingCodeChange }) {\r\n\t\tthis.onCountryChange = onCountryChange\r\n\t\tthis.onCallingCodeChange = onCallingCodeChange\r\n\t}\r\n\r\n\treset({ country, callingCode }) {\r\n\t\tthis.international = false\r\n\t\tthis.IDDPrefix = undefined\r\n\t\tthis.missingPlus = undefined\r\n\t\tthis.callingCode = undefined\r\n\t\tthis.digits = ''\r\n\t\tthis.resetNationalSignificantNumber()\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tresetNationalSignificantNumber() {\r\n\t\tthis.nationalSignificantNumber = this.getNationalDigits()\r\n\t\tthis.nationalSignificantNumberMatchesInput = true\r\n\t\tthis.nationalPrefix = undefined\r\n\t\tthis.carrierCode = undefined\r\n\t\tthis.complexPrefixBeforeNationalSignificantNumber = undefined\r\n\t}\r\n\r\n\tupdate(properties) {\r\n\t\tfor (const key of Object.keys(properties)) {\r\n\t\t\tthis[key] = properties[key]\r\n\t\t}\r\n\t}\r\n\r\n\tinitCountryAndCallingCode(country, callingCode) {\r\n\t\tthis.setCountry(country)\r\n\t\tthis.setCallingCode(callingCode)\r\n\t}\r\n\r\n\tsetCountry(country) {\r\n\t\tthis.country = country\r\n\t\tthis.onCountryChange(country)\r\n\t}\r\n\r\n\tsetCallingCode(callingCode) {\r\n\t\tthis.callingCode = callingCode\r\n\t\tthis.onCallingCodeChange(callingCode, this.country)\r\n\t}\r\n\r\n\tstartInternationalNumber(country, callingCode) {\r\n\t\t// Prepend the `+` to parsed input.\r\n\t\tthis.international = true\r\n\t\t// If a default country was set then reset it\r\n\t\t// because an explicitly international phone\r\n\t\t// number is being entered.\r\n\t\tthis.initCountryAndCallingCode(country, callingCode)\r\n\t}\r\n\r\n\tappendDigits(nextDigits) {\r\n\t\tthis.digits += nextDigits\r\n\t}\r\n\r\n\tappendNationalSignificantNumberDigits(nextDigits) {\r\n\t\tthis.nationalSignificantNumber += nextDigits\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the part of `this.digits` that corresponds to the national number.\r\n\t * Basically, all digits that have been input by the user, except for the\r\n\t * international prefix and the country calling code part\r\n\t * (if the number is an international one).\r\n\t * @return {string}\r\n\t */\r\n\tgetNationalDigits() {\r\n\t\tif (this.international) {\r\n\t\t\treturn this.digits.slice(\r\n\t\t\t\t(this.IDDPrefix ? this.IDDPrefix.length : 0) +\r\n\t\t\t\t(this.callingCode ? this.callingCode.length : 0)\r\n\t\t\t)\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n\r\n\tgetDigitsWithoutInternationalPrefix() {\r\n\t\tif (this.international) {\r\n\t\t\tif (this.IDDPrefix) {\r\n\t\t\t\treturn this.digits.slice(this.IDDPrefix.length)\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.digits\r\n\t}\r\n}","// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n constructor(code) {\r\n super(code)\r\n // Set the prototype explicitly.\r\n // Any subclass of FooError will have to manually set the prototype as well.\r\n Object.setPrototypeOf(this, ParseError.prototype)\r\n this.name = this.constructor.name\r\n }\r\n}","import Metadata from './metadata.js'\r\nimport isPossibleNumber from './isPossible.js'\r\nimport isValidNumber from './isValid.js'\r\n// import checkNumberLength from './helpers/checkNumberLength.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js'\r\nimport formatNumber from './format.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\t/**\r\n\t * @param {string} countryOrCountryCallingCode\r\n\t * @param {string} nationalNumber\r\n\t * @param {object} metadata — Metadata JSON\r\n\t * @return {PhoneNumber}\r\n\t */\r\n\tconstructor(countryOrCountryCallingCode, nationalNumber, metadata) {\r\n\t\tif (!countryOrCountryCallingCode) {\r\n\t\t\tthrow new TypeError('`country` or `countryCallingCode` not passed')\r\n\t\t}\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` not passed')\r\n\t\t}\r\n\t\tif (!metadata) {\r\n\t\t\tthrow new TypeError('`metadata` not passed')\r\n\t\t}\r\n\t\tconst { country, countryCallingCode } = getCountryAndCountryCallingCode(\r\n\t\t\tcountryOrCountryCallingCode,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tthis.country = country\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tgetPossibleCountries() {\r\n\t\tif (this.country) {\r\n\t\t\treturn [this.country]\r\n\t\t}\r\n\t\treturn getPossibleCountriesForNumber(\r\n\t\t\tthis.countryCallingCode,\r\n\t\t\tthis.nationalNumber,\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.metadata)\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\r\n\t// but later it was found out that it doesn't include the possible `TOO_SHORT` result\r\n\t// returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\r\n\t// so eventually I simply commented out this method from the `PhoneNumber` class\r\n\t// and just left the `validatePhoneNumberLength()` function, even though that one would require\r\n\t// and additional step to also validate the actual country / calling code of the phone number.\r\n\t// validateLength() {\r\n\t// \tconst metadata = new Metadata(this.metadata)\r\n\t// \tmetadata.selectNumberingPlan(this.countryCallingCode)\r\n\t// \tconst result = checkNumberLength(this.nationalNumber, metadata)\r\n\t// \tif (result !== 'IS_POSSIBLE') {\r\n\t// \t\treturn result\r\n\t// \t}\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.metadata)\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.metadata\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)\r\n\r\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\r\n\tlet country\r\n\tlet countryCallingCode\r\n\r\n\tconst metadata = new Metadata(metadataJson)\r\n\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t// Also store the country code as `.country`.\r\n\tif (isCountryCode(countryOrCountryCallingCode)) {\r\n\t\tcountry = countryOrCountryCallingCode\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\tcountryCallingCode = metadata.countryCallingCode()\r\n\t} else {\r\n\t\tcountryCallingCode = countryOrCountryCallingCode\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tif (metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\tcountry = '001'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode\r\n\t}\r\n}","/**\r\n * A port of Google's `PhoneNumberMatcher.java`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java\r\n * Date: 08.03.2018.\r\n */\r\n\r\nimport PhoneNumber from './PhoneNumber.js'\r\n\r\nimport {\r\n MAX_LENGTH_FOR_NSN,\r\n MAX_LENGTH_COUNTRY_CODE,\r\n VALID_PUNCTUATION\r\n} from './constants.js'\r\n\r\nimport createExtensionPattern from './helpers/extension/createExtensionPattern.js'\r\n\r\nimport RegExpCache from './findNumbers/RegExpCache.js'\r\n\r\nimport {\r\n\tlimit,\r\n\ttrimAfterFirstMatch\r\n} from './findNumbers/util.js'\r\n\r\nimport {\r\n\t_pL,\r\n\t_pN,\r\n\tpZ,\r\n\tPZ,\r\n\tpNd\r\n} from './findNumbers/utf-8.js'\r\n\r\nimport Leniency from './findNumbers/Leniency.js'\r\nimport parsePreCandidate from './findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from './findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate, { LEAD_CLASS } from './findNumbers/isValidCandidate.js'\r\n\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nimport parsePhoneNumber from './parsePhoneNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nconst EXTN_PATTERNS_FOR_MATCHING = createExtensionPattern('matching')\r\n\r\n/**\r\n * Patterns used to extract phone numbers from a larger phone-number-like pattern. These are\r\n * ordered according to specificity. For example, white-space is last since that is frequently\r\n * used in numbers, not just to separate two numbers. We have separate patterns since we don't\r\n * want to break up the phone-number-like text on more than one different kind of symbol at one\r\n * time, although symbols of the same type (e.g. space) can be safely grouped together.\r\n *\r\n * Note that if there is a match, we will always check any text found up to the first match as\r\n * well.\r\n */\r\nconst INNER_MATCHES =\r\n[\r\n\t// Breaks on the slash - e.g. \"651-234-2345/332-445-1234\"\r\n\t'\\\\/+(.*)/',\r\n\r\n\t// Note that the bracket here is inside the capturing group, since we consider it part of the\r\n\t// phone number. Will match a pattern like \"(650) 223 3345 (754) 223 3321\".\r\n\t'(\\\\([^(]*)',\r\n\r\n\t// Breaks on a hyphen - e.g. \"12345 - 332-445-1234 is my number.\"\r\n\t// We require a space on either side of the hyphen for it to be considered a separator.\r\n\t`(?:${pZ}-|-${pZ})${pZ}*(.+)`,\r\n\r\n\t// Various types of wide hyphens. Note we have decided not to enforce a space here, since it's\r\n\t// possible that it's supposed to be used to break two numbers without spaces, and we haven't\r\n\t// seen many instances of it used within a number.\r\n\t`[\\u2012-\\u2015\\uFF0D]${pZ}*(.+)`,\r\n\r\n\t// Breaks on a full stop - e.g. \"12345. 332-445-1234 is my number.\"\r\n\t`\\\\.+${pZ}*([^.]+)`,\r\n\r\n\t// Breaks on space - e.g. \"3324451234 8002341234\"\r\n\t`${pZ}+(${PZ}+)`\r\n]\r\n\r\n// Limit on the number of leading (plus) characters.\r\nconst leadLimit = limit(0, 2)\r\n\r\n// Limit on the number of consecutive punctuation characters.\r\nconst punctuationLimit = limit(0, 4)\r\n\r\n/* The maximum number of digits allowed in a digit-separated block. As we allow all digits in a\r\n * single block, set high enough to accommodate the entire national number and the international\r\n * country code. */\r\nconst digitBlockLimit = MAX_LENGTH_FOR_NSN + MAX_LENGTH_COUNTRY_CODE\r\n\r\n// Limit on the number of blocks separated by punctuation.\r\n// Uses digitBlockLimit since some formats use spaces to separate each digit.\r\nconst blockLimit = limit(0, digitBlockLimit)\r\n\r\n/* A punctuation sequence allowing white space. */\r\nconst punctuation = `[${VALID_PUNCTUATION}]` + punctuationLimit\r\n\r\n// A digits block without punctuation.\r\nconst digitSequence = pNd + limit(1, digitBlockLimit)\r\n\r\n/**\r\n * Phone number pattern allowing optional punctuation.\r\n * The phone number pattern used by `find()`, similar to\r\n * VALID_PHONE_NUMBER, but with the following differences:\r\n * <ul>\r\n * <li>All captures are limited in order to place an upper bound to the text matched by the\r\n * pattern.\r\n * <ul>\r\n * <li>Leading punctuation / plus signs are limited.\r\n * <li>Consecutive occurrences of punctuation are limited.\r\n * <li>Number of digits is limited.\r\n * </ul>\r\n * <li>No whitespace is allowed at the start or end.\r\n * <li>No alpha digits (vanity numbers such as 1-800-SIX-FLAGS) are currently supported.\r\n * </ul>\r\n */\r\nconst PATTERN = '(?:' + LEAD_CLASS + punctuation + ')' + leadLimit\r\n\t+ digitSequence + '(?:' + punctuation + digitSequence + ')' + blockLimit\r\n\t+ '(?:' + EXTN_PATTERNS_FOR_MATCHING + ')?'\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// We remove all characters that are not alpha or numerical characters.\r\n// The hash character is retained here, as it may signify\r\n// the previous block was an extension.\r\n//\r\n// // Don't know what does '&&' mean here.\r\n// const UNWANTED_END_CHAR_PATTERN = new RegExp(`[[\\\\P{N}&&\\\\P{L}]&&[^#]]+$`)\r\n//\r\nconst UNWANTED_END_CHAR_PATTERN = new RegExp(`[^${_pN}${_pL}#]+$`)\r\n\r\nconst NON_DIGITS_PATTERN = /(\\D+)/\r\n\r\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1\r\n\r\n/**\r\n * A stateful class that finds and extracts telephone numbers from {@linkplain CharSequence text}.\r\n * Instances can be created using the {@linkplain PhoneNumberUtil#findNumbers factory methods} in\r\n * {@link PhoneNumberUtil}.\r\n *\r\n * <p>Vanity numbers (phone numbers using alphabetic digits such as <tt>1-800-SIX-FLAGS</tt> are\r\n * not found.\r\n *\r\n * <p>This class is not thread-safe.\r\n */\r\nexport default class PhoneNumberMatcher\r\n{\r\n /**\r\n * @param {string} text — the character sequence that we will search, null for no text.\r\n * @param {'POSSIBLE'|'VALID'|'STRICT_GROUPING'|'EXACT_GROUPING'} [options.leniency] — The leniency to use when evaluating candidate phone numbers. See `source/findNumbers/Leniency.js` for more details.\r\n * @param {number} [options.maxTries] — The maximum number of invalid numbers to try before giving up on the text. This is to cover degenerate cases where the text has a lot of false positives in it. Must be >= 0.\r\n */\r\n constructor(text = '', options = {}, metadata)\r\n {\r\n options = {\r\n v2: options.v2,\r\n defaultCallingCode: options.defaultCallingCode,\r\n defaultCountry: options.defaultCountry && isSupportedCountry(options.defaultCountry, metadata) ? options.defaultCountry : undefined,\r\n leniency: options.leniency || (options.extended ? 'POSSIBLE' : 'VALID'),\r\n maxTries: options.maxTries || MAX_SAFE_INTEGER\r\n }\r\n\r\n // Validate `leniency`.\r\n\t\tif (!options.leniency) {\r\n\t\t\tthrow new TypeError('`leniency` is required')\r\n\t\t}\r\n if (options.leniency !== 'POSSIBLE' && options.leniency !== 'VALID') {\r\n throw new TypeError(`Invalid \\`leniency\\`: \"${options.leniency}\". Supported values: \"POSSIBLE\", \"VALID\".`)\r\n }\r\n\r\n // Validate `maxTries`.\r\n\t\tif (options.maxTries < 0) {\r\n\t\t\tthrow new TypeError('`maxTries` must be `>= 0`')\r\n\t\t}\r\n\r\n\t\tthis.text = text\r\n\t\tthis.options = options\r\n this.metadata = metadata\r\n\r\n\t\t// The degree of phone number validation.\r\n\t\tthis.leniency = Leniency[options.leniency]\r\n\r\n\t\tif (!this.leniency) {\r\n\t\t\tthrow new TypeError(`Unknown leniency: \"${options.leniency}\"`)\r\n\t\t}\r\n\r\n\t\t/** The maximum number of retries after matching an invalid number. */\r\n\t\tthis.maxTries = options.maxTries\r\n\r\n\t\tthis.PATTERN = new RegExp(PATTERN, 'ig')\r\n\r\n /** The iteration tristate. */\r\n this.state = 'NOT_READY'\r\n\r\n /** The next index to start searching at. Undefined in {@link State#DONE}. */\r\n this.searchIndex = 0\r\n\r\n // A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n // countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n // a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n // that use-case won't have a lot of benefit.\r\n this.regExpCache = new RegExpCache(32)\r\n }\r\n\r\n /**\r\n * Attempts to find the next subsequence in the searched sequence on or after {@code searchIndex}\r\n * that represents a phone number. Returns the next match, null if none was found.\r\n *\r\n * @param index the search index to start searching at\r\n * @return the phone number match found, null if none can be found\r\n */\r\n\tfind() {\r\n\t\t// // Reset the regular expression.\r\n\t\t// this.PATTERN.lastIndex = index\r\n\r\n\t\tlet matches\r\n\t\twhile ((this.maxTries > 0) && (matches = this.PATTERN.exec(this.text)) !== null) {\r\n\t\t\tlet candidate = matches[0]\r\n\t\t\tconst offset = matches.index\r\n\r\n\t\t\tcandidate = parsePreCandidate(candidate)\r\n\r\n\t\t\tif (isValidPreCandidate(candidate, offset, this.text)) {\r\n\t\t\t\tconst match =\r\n\t\t\t\t\t// Try to come up with a valid match given the entire candidate.\r\n\t\t\t\t\tthis.parseAndVerify(candidate, offset, this.text)\r\n\t\t\t\t\t// If that failed, try to find an \"inner match\" -\r\n\t\t\t\t\t// there might be a phone number within this candidate.\r\n\t\t\t\t\t|| this.extractInnerMatch(candidate, offset, this.text)\r\n\r\n\t\t\t\tif (match) {\r\n\t\t\t\t\tif (this.options.v2) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tstartsAt: match.startsAt,\r\n\t\t\t\t\t\t\tendsAt: match.endsAt,\r\n\t\t\t\t\t\t\tnumber: match.phoneNumber\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n const { phoneNumber } = match\r\n\r\n const result = {\r\n startsAt: match.startsAt,\r\n endsAt: match.endsAt,\r\n phone: phoneNumber.nationalNumber\r\n }\r\n\r\n if (phoneNumber.country) {\r\n /* istanbul ignore if */\r\n if (USE_NON_GEOGRAPHIC_COUNTRY_CODE && country === '001') {\r\n result.countryCallingCode = phoneNumber.countryCallingCode\r\n } else {\r\n result.country = phoneNumber.country\r\n }\r\n } else {\r\n result.countryCallingCode = phoneNumber.countryCallingCode\r\n }\r\n\r\n if (phoneNumber.ext) {\r\n result.ext = phoneNumber.ext\r\n }\r\n\r\n return result\r\n }\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.maxTries--\r\n\t\t}\r\n\t}\r\n\r\n /**\r\n * Attempts to extract a match from `substring`\r\n * if the substring itself does not qualify as a match.\r\n */\r\n extractInnerMatch(substring, offset, text) {\r\n for (const innerMatchPattern of INNER_MATCHES) {\r\n let isFirstMatch = true\r\n let candidateMatch\r\n const innerMatchRegExp = new RegExp(innerMatchPattern, 'g')\r\n while (this.maxTries > 0 && (candidateMatch = innerMatchRegExp.exec(substring)) !== null) {\r\n if (isFirstMatch) {\r\n // We should handle any group before this one too.\r\n const candidate = trimAfterFirstMatch(\r\n UNWANTED_END_CHAR_PATTERN,\r\n substring.slice(0, candidateMatch.index)\r\n )\r\n\r\n const match = this.parseAndVerify(candidate, offset, text)\r\n\r\n if (match) {\r\n return match\r\n }\r\n\r\n this.maxTries--\r\n isFirstMatch = false\r\n }\r\n\r\n const candidate = trimAfterFirstMatch(UNWANTED_END_CHAR_PATTERN, candidateMatch[1])\r\n\r\n // Java code does `groupMatcher.start(1)` here,\r\n // but there's no way in javascript to get a `candidate` start index,\r\n // therefore resort to using this kind of an approximation.\r\n // (`groupMatcher` is called `candidateInSubstringMatch` in this javascript port)\r\n // https://stackoverflow.com/questions/15934353/get-index-of-each-capture-in-a-javascript-regex\r\n const candidateIndexGuess = substring.indexOf(candidate, candidateMatch.index)\r\n\r\n const match = this.parseAndVerify(candidate, offset + candidateIndexGuess, text)\r\n if (match) {\r\n return match\r\n }\r\n\r\n this.maxTries--\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Parses a phone number from the `candidate` using `parse` and\r\n * verifies it matches the requested `leniency`. If parsing and verification succeed,\r\n * a corresponding `PhoneNumberMatch` is returned, otherwise this method returns `null`.\r\n *\r\n * @param candidate the candidate match\r\n * @param offset the offset of {@code candidate} within {@link #text}\r\n * @return the parsed and validated phone number match, or null\r\n */\r\n parseAndVerify(candidate, offset, text) {\r\n if (!isValidCandidate(candidate, offset, text, this.options.leniency)) {\r\n return\r\n \t}\r\n\r\n const phoneNumber = parsePhoneNumber(\r\n candidate,\r\n {\r\n extended: true,\r\n defaultCountry: this.options.defaultCountry,\r\n defaultCallingCode: this.options.defaultCallingCode\r\n },\r\n this.metadata\r\n )\r\n\r\n if (!phoneNumber) {\r\n return\r\n }\r\n\r\n if (!phoneNumber.isPossible()) {\r\n return\r\n }\r\n\r\n if (this.leniency(phoneNumber, candidate, this.metadata, this.regExpCache)) {\r\n return {\r\n startsAt: offset,\r\n endsAt: offset + candidate.length,\r\n phoneNumber\r\n }\r\n }\r\n }\r\n\r\n hasNext()\r\n {\r\n if (this.state === 'NOT_READY')\r\n {\r\n this.lastMatch = this.find() // (this.searchIndex)\r\n\r\n if (this.lastMatch)\r\n {\r\n // this.searchIndex = this.lastMatch.endsAt\r\n this.state = 'READY'\r\n }\r\n else\r\n {\r\n this.state = 'DONE'\r\n }\r\n }\r\n\r\n return this.state === 'READY'\r\n }\r\n\r\n next()\r\n {\r\n // Check the state and find the next match as a side-effect if necessary.\r\n if (!this.hasNext())\r\n {\r\n throw new Error('No next element')\r\n }\r\n\r\n // Don't retain that memory any longer than necessary.\r\n const result = this.lastMatch\r\n this.lastMatch = null\r\n this.state = 'NOT_READY'\r\n return result\r\n }\r\n}","// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","// https://medium.com/dsinjs/implementing-lru-cache-in-javascript-94ba6755cda9\r\n\r\nclass Node {\r\n constructor(key, value, next = null, prev = null) {\r\n this.key = key;\r\n this.value = value;\r\n this.next = next;\r\n this.prev = prev;\r\n }\r\n}\r\n\r\nexport default class LRUCache {\r\n //set default limit of 10 if limit is not passed.\r\n constructor(limit = 10) {\r\n this.size = 0;\r\n this.limit = limit;\r\n this.head = null;\r\n this.tail = null;\r\n this.cache = {};\r\n }\r\n\r\n // Write Node to head of LinkedList\r\n // update cache with Node key and Node reference\r\n put(key, value){\r\n this.ensureLimit();\r\n\r\n if(!this.head){\r\n this.head = this.tail = new Node(key, value);\r\n }else{\r\n const node = new Node(key, value, this.head);\r\n this.head.prev = node;\r\n this.head = node;\r\n }\r\n\r\n //Update the cache map\r\n this.cache[key] = this.head;\r\n this.size++;\r\n }\r\n\r\n // Read from cache map and make that node as new Head of LinkedList\r\n get(key){\r\n if(this.cache[key]){\r\n const value = this.cache[key].value;\r\n\r\n // node removed from it's position and cache\r\n this.remove(key)\r\n // write node again to the head of LinkedList to make it most recently used\r\n this.put(key, value);\r\n\r\n return value;\r\n }\r\n\r\n console.log(`Item not available in cache for key ${key}`);\r\n }\r\n\r\n ensureLimit(){\r\n if(this.size === this.limit){\r\n this.remove(this.tail.key)\r\n }\r\n }\r\n\r\n remove(key){\r\n const node = this.cache[key];\r\n\r\n if(node.prev !== null){\r\n node.prev.next = node.next;\r\n }else{\r\n this.head = node.next;\r\n }\r\n\r\n if(node.next !== null){\r\n node.next.prev = node.prev;\r\n }else{\r\n this.tail = node.prev\r\n }\r\n\r\n delete this.cache[key];\r\n this.size--;\r\n }\r\n\r\n clear() {\r\n this.head = null;\r\n this.tail = null;\r\n this.size = 0;\r\n this.cache = {};\r\n }\r\n\r\n // // Invokes the callback function with every node of the chain and the index of the node.\r\n // forEach(fn) {\r\n // let node = this.head;\r\n // let counter = 0;\r\n // while (node) {\r\n // fn(node, counter);\r\n // node = node.next;\r\n // counter++;\r\n // }\r\n // }\r\n\r\n // // To iterate over LRU with a 'for...of' loop\r\n // *[Symbol.iterator]() {\r\n // let node = this.head;\r\n // while (node) {\r\n // yield node;\r\n // node = node.next;\r\n // }\r\n // }\r\n}","import isValidNumber from '../isValid.js'\r\nimport parseDigits from '../helpers/parseDigits.js'\r\nimport matchPhoneNumberStringAgainstPhoneNumber from './matchPhoneNumberStringAgainstPhoneNumber.js'\r\nimport Metadata from '../metadata.js'\r\nimport getCountryByCallingCode from '../helpers/getCountryByCallingCode.js'\r\nimport { chooseFormatForNumber } from '../format.js'\r\n\r\nimport {\r\n\tstartsWith,\r\n\tendsWith\r\n} from './util.js'\r\n\r\n/**\r\n * Leniency when finding potential phone numbers in text segments\r\n * The levels here are ordered in increasing strictness.\r\n */\r\nexport default\r\n{\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\", but not necessarily \"valid\".\r\n\t */\r\n\tPOSSIBLE(phoneNumber, candidate, metadata)\r\n\t{\r\n\t\treturn true\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"possible\" and \"valid\".\r\n\t * Numbers written in national format must have their national-prefix\r\n\t * present if it is usually written for a number of this type.\r\n\t */\r\n\tVALID(phoneNumber, candidate, metadata)\r\n\t{\r\n\t\tif (\r\n\t\t\t!phoneNumber.isValid() ||\r\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata)\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\t// Skipped for simplicity.\r\n\t\t// return isNationalPrefixPresentIfRequired(phoneNumber, metadata)\r\n\t\treturn true\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"valid\" and\r\n\t * are grouped in a possible way for this locale. For example, a US number written as\r\n\t * \"65 02 53 00 00\" and \"650253 0000\" are not accepted at this leniency level, whereas\r\n\t * \"650 253 0000\", \"650 2530000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol in the national significant number\r\n\t * are also dropped at this level.\r\n\t *\r\n\t * Warning: This level might result in lower coverage especially for regions outside of\r\n\t * country code \"+1\". If you are not sure about which level to use,\r\n\t * email the discussion group libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tSTRICT_GROUPING(phoneNumber, candidate, metadata, regExpCache)\r\n\t{\r\n\t\tif (\r\n\t\t\t!phoneNumber.isValid() ||\r\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata) ||\r\n\t\t\tcontainsMoreThanOneSlashInNationalNumber(phoneNumber, candidate) ||\r\n\t\t\t!isNationalPrefixPresentIfRequired(phoneNumber, metadata)\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tphoneNumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsRemainGrouped,\r\n\t\t\tregExpCache\r\n\t\t)\r\n\t},\r\n\r\n\t/**\r\n\t * Phone numbers accepted are \"valid\" and are grouped in the same way\r\n\t * that we would have formatted it, or as a single block.\r\n\t * For example, a US number written as \"650 2530000\" is not accepted\r\n\t * at this leniency level, whereas \"650 253 0000\" or \"6502530000\" are.\r\n\t * Numbers with more than one '/' symbol are also dropped at this level.\r\n\t *\r\n\t * Warning: This level might result in lower coverage especially for regions outside of\r\n\t * country code \"+1\". If you are not sure about which level to use, email the discussion group\r\n\t * libphonenumber-discuss@googlegroups.com.\r\n\t */\r\n\tEXACT_GROUPING(phoneNumber, candidate, metadata, regExpCache)\r\n\t{\r\n\t\tif (\r\n\t\t\t!phoneNumber.isValid() ||\r\n\t\t\t!containsOnlyValidXChars(phoneNumber, candidate, metadata) ||\r\n\t\t\tcontainsMoreThanOneSlashInNationalNumber(phoneNumber, candidate) ||\r\n\t\t\t!isNationalPrefixPresentIfRequired(phoneNumber, metadata)\r\n\t\t)\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\r\n\t\treturn checkNumberGroupingIsValid\r\n\t\t(\r\n\t\t\tphoneNumber,\r\n\t\t\tcandidate,\r\n\t\t\tmetadata,\r\n\t\t\tallNumberGroupsAreExactlyPresent,\r\n\t\t\tregExpCache\r\n\t\t)\r\n\t}\r\n}\r\n\r\nfunction containsOnlyValidXChars(phoneNumber, candidate, metadata)\r\n{\r\n\t// The characters 'x' and 'X' can be (1) a carrier code, in which case they always precede the\r\n\t// national significant number or (2) an extension sign, in which case they always precede the\r\n\t// extension number. We assume a carrier code is more than 1 digit, so the first case has to\r\n\t// have more than 1 consecutive 'x' or 'X', whereas the second case can only have exactly 1 'x'\r\n\t// or 'X'. We ignore the character if it appears as the last character of the string.\r\n\tfor (let index = 0; index < candidate.length - 1; index++)\r\n\t{\r\n\t\tconst charAtIndex = candidate.charAt(index)\r\n\r\n\t\tif (charAtIndex === 'x' || charAtIndex === 'X')\r\n\t\t{\r\n\t\t\tconst charAtNextIndex = candidate.charAt(index + 1)\r\n\r\n\t\t\tif (charAtNextIndex === 'x' || charAtNextIndex === 'X')\r\n\t\t\t{\r\n\t\t\t\t// This is the carrier code case, in which the 'X's always precede the national\r\n\t\t\t\t// significant number.\r\n\t\t\t\tindex++\r\n\t\t\t\tif (matchPhoneNumberStringAgainstPhoneNumber(candidate.substring(index), phoneNumber, metadata) !== 'NSN_MATCH')\r\n\t\t\t\t{\r\n\t\t\t\t\treturn false\r\n\t\t\t\t}\r\n\t\t\t\t// This is the extension sign case, in which the 'x' or 'X' should always precede the\r\n\t\t\t\t// extension number.\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tconst ext = parseDigits(candidate.substring(index))\r\n\t\t\t\tif (ext) {\r\n\t\t\t\t\tif (phoneNumber.ext !== ext) {\r\n\t\t\t\t\t\treturn false\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (phoneNumber.ext) {\r\n\t\t\t\t\t\treturn false\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nfunction isNationalPrefixPresentIfRequired(phoneNumber, _metadata)\r\n{\r\n\t// First, check how we deduced the country code. If it was written in international format, then\r\n\t// the national prefix is not required.\r\n\tif (phoneNumber.__countryCallingCodeSource !== 'FROM_DEFAULT_COUNTRY')\r\n\t{\r\n\t\treturn true\r\n\t}\r\n\r\n\tconst metadata = new Metadata(_metadata)\r\n\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\r\n\r\n\tconst phoneNumberRegion = phoneNumber.country || getCountryByCallingCode(phoneNumber.countryCallingCode, phoneNumber.nationalNumber, metadata)\r\n\r\n\t// Check if a national prefix should be present when formatting this number.\r\n\tconst nationalNumber = phoneNumber.nationalNumber\r\n\tconst format = chooseFormatForNumber(metadata.numberingPlan.formats(), nationalNumber)\r\n\r\n\t// To do this, we check that a national prefix formatting rule was present\r\n\t// and that it wasn't just the first-group symbol ($1) with punctuation.\r\n\tif (format.nationalPrefixFormattingRule())\r\n\t{\r\n\t\tif (metadata.numberingPlan.nationalPrefixIsOptionalWhenFormattingInNationalFormat())\r\n\t\t{\r\n\t\t\t// The national-prefix is optional in these cases, so we don't need to check if it was present.\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\tif (!format.usesNationalPrefix())\r\n\t\t{\r\n\t\t\t// National Prefix not needed for this number.\r\n\t\t\treturn true\r\n\t\t}\r\n\r\n\t\treturn Boolean(phoneNumber.nationalPrefix)\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nexport function containsMoreThanOneSlashInNationalNumber(phoneNumber, candidate)\r\n{\r\n\tconst firstSlashInBodyIndex = candidate.indexOf('/')\r\n\tif (firstSlashInBodyIndex < 0)\r\n\t{\r\n\t\t// No slashes, this is okay.\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Now look for a second one.\r\n\tconst secondSlashInBodyIndex = candidate.indexOf('/', firstSlashInBodyIndex + 1)\r\n\tif (secondSlashInBodyIndex < 0)\r\n\t{\r\n\t\t// Only one slash, this is okay.\r\n\t\treturn false\r\n\t}\r\n\r\n\t// If the first slash is after the country calling code, this is permitted.\r\n\tconst candidateHasCountryCode =\r\n\t\t\tphoneNumber.__countryCallingCodeSource === 'FROM_NUMBER_WITH_PLUS_SIGN' ||\r\n\t\t\tphoneNumber.__countryCallingCodeSource === 'FROM_NUMBER_WITHOUT_PLUS_SIGN'\r\n\r\n\tif (candidateHasCountryCode && parseDigits(candidate.substring(0, firstSlashInBodyIndex)) === phoneNumber.countryCallingCode)\r\n\t{\r\n\t\t// Any more slashes and this is illegal.\r\n\t\treturn candidate.slice(secondSlashInBodyIndex + 1).indexOf('/') >= 0\r\n\t}\r\n\r\n\treturn true\r\n}\r\n\r\nfunction checkNumberGroupingIsValid(\r\n\tnumber,\r\n\tcandidate,\r\n\tmetadata,\r\n\tcheckGroups,\r\n\tregExpCache\r\n) {\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tconst normalizedCandidate = normalizeDigits(candidate, true /* keep non-digits */)\r\n\tlet formattedNumberGroups = getNationalNumberGroups(metadata, number, null)\r\n\tif (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n\t\treturn true\r\n\t}\r\n\r\n\t// If this didn't pass, see if there are any alternate formats that match, and try them instead.\r\n\tconst alternateFormats = MetadataManager.getAlternateFormatsForCountry(number.getCountryCode())\r\n\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\r\n\tif (alternateFormats) {\r\n\t\tfor (const alternateFormat of alternateFormats.numberFormats()) {\r\n\t\t\tif (alternateFormat.leadingDigitsPatterns().length > 0) {\r\n\t\t\t\t// There is only one leading digits pattern for alternate formats.\r\n\t\t\t\tconst leadingDigitsRegExp = regExpCache.getPatternForRegExp('^' + alternateFormat.leadingDigitsPatterns()[0])\r\n\t\t\t\tif (!leadingDigitsRegExp.test(nationalSignificantNumber)) {\r\n\t\t\t\t\t// Leading digits don't match; try another one.\r\n\t\t\t\t\tcontinue\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tformattedNumberGroups = getNationalNumberGroups(metadata, number, alternateFormat)\r\n\t\t\tif (checkGroups(metadata, number, normalizedCandidate, formattedNumberGroups)) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn false\r\n}\r\n\r\n/**\r\n * Helper method to get the national-number part of a number, formatted without any national\r\n * prefix, and return it as a set of digit blocks that would be formatted together following\r\n * standard formatting rules.\r\n */\r\nfunction getNationalNumberGroups(\r\n\tmetadata,\r\n\tnumber,\r\n\tformattingPattern\r\n) {\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tif (formattingPattern) {\r\n\t\t// We format the NSN only, and split that according to the separator.\r\n\t\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\t\treturn util.formatNsnUsingPattern(nationalSignificantNumber,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tformattingPattern, 'RFC3966', metadata).split('-')\r\n\t}\r\n\r\n\t// This will be in the format +CC-DG1-DG2-DGX;ext=EXT where DG1..DGX represents groups of digits.\r\n\tconst rfc3966Format = formatNumber(number, 'RFC3966', metadata)\r\n\r\n\t// We remove the extension part from the formatted string before splitting it into different\r\n\t// groups.\r\n\tlet endIndex = rfc3966Format.indexOf(';')\r\n\tif (endIndex < 0) {\r\n\t\tendIndex = rfc3966Format.length\r\n\t}\r\n\r\n\t// The country-code will have a '-' following it.\r\n\tconst startIndex = rfc3966Format.indexOf('-') + 1\r\n\treturn rfc3966Format.slice(startIndex, endIndex).split('-')\r\n}\r\n\r\nfunction allNumberGroupsAreExactlyPresent\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tconst candidateGroups = normalizedCandidate.split(NON_DIGITS_PATTERN)\r\n\r\n\t// Set this to the last group, skipping it if the number has an extension.\r\n\tlet candidateNumberGroupIndex =\r\n\t\t\tnumber.hasExtension() ? candidateGroups.length - 2 : candidateGroups.length - 1\r\n\r\n\t// First we check if the national significant number is formatted as a block.\r\n\t// We use contains and not equals, since the national significant number may be present with\r\n\t// a prefix such as a national number prefix, or the country code itself.\r\n\tif (candidateGroups.length == 1\r\n\t\t\t|| candidateGroups[candidateNumberGroupIndex].contains(\r\n\t\t\t\t\tutil.getNationalSignificantNumber(number)))\r\n\t{\r\n\t\treturn true\r\n\t}\r\n\r\n\t// Starting from the end, go through in reverse, excluding the first group, and check the\r\n\t// candidate and number groups are the same.\r\n\tlet formattedNumberGroupIndex = (formattedNumberGroups.length - 1)\r\n\twhile (formattedNumberGroupIndex > 0 && candidateNumberGroupIndex >= 0)\r\n\t{\r\n\t\tif (candidateGroups[candidateNumberGroupIndex] !== formattedNumberGroups[formattedNumberGroupIndex])\r\n\t\t{\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tformattedNumberGroupIndex--\r\n\t\tcandidateNumberGroupIndex--\r\n\t}\r\n\r\n\t// Now check the first group. There may be a national prefix at the start, so we only check\r\n\t// that the candidate group ends with the formatted number group.\r\n\treturn (candidateNumberGroupIndex >= 0\r\n\t\t\t&& endsWith(candidateGroups[candidateNumberGroupIndex], formattedNumberGroups[0]))\r\n}\r\n\r\n\r\nfunction allNumberGroupsRemainGrouped\r\n(\r\n\tmetadata,\r\n\tnumber,\r\n\tnormalizedCandidate,\r\n\tformattedNumberGroups\r\n)\r\n{\r\n\tthrow new Error('This part of code hasn\\'t been ported')\r\n\r\n\tlet fromIndex = 0\r\n\tif (number.getCountryCodeSource() !== CountryCodeSource.FROM_DEFAULT_COUNTRY)\r\n\t{\r\n\t\t// First skip the country code if the normalized candidate contained it.\r\n\t\tconst countryCode = String(number.getCountryCode())\r\n\t\tfromIndex = normalizedCandidate.indexOf(countryCode) + countryCode.length()\r\n\t}\r\n\r\n\t// Check each group of consecutive digits are not broken into separate groupings in the\r\n\t// {@code normalizedCandidate} string.\r\n\tfor (let i = 0; i < formattedNumberGroups.length; i++)\r\n\t{\r\n\t\t// Fails if the substring of {@code normalizedCandidate} starting from {@code fromIndex}\r\n\t\t// doesn't contain the consecutive digits in formattedNumberGroups[i].\r\n\t\tfromIndex = normalizedCandidate.indexOf(formattedNumberGroups[i], fromIndex)\r\n\t\tif (fromIndex < 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Moves {@code fromIndex} forward.\r\n\t\tfromIndex += formattedNumberGroups[i].length()\r\n\t\tif (i == 0 && fromIndex < normalizedCandidate.length())\r\n\t\t{\r\n\t\t\t// We are at the position right after the NDC. We get the region used for formatting\r\n\t\t\t// information based on the country code in the phone number, rather than the number itself,\r\n\t\t\t// as we do not need to distinguish between different countries with the same country\r\n\t\t\t// calling code and this is faster.\r\n\t\t\tconst region = util.getRegionCodeForCountryCode(number.getCountryCode())\r\n\t\t\tif (util.getNddPrefixForRegion(region, true) != null\r\n\t\t\t\t\t&& Character.isDigit(normalizedCandidate.charAt(fromIndex))) {\r\n\t\t\t\t// This means there is no formatting symbol after the NDC. In this case, we only\r\n\t\t\t\t// accept the number if there is no formatting symbol at all in the number, except\r\n\t\t\t\t// for extensions. This is only important for countries with national prefixes.\r\n\t\t\t\tconst nationalSignificantNumber = util.getNationalSignificantNumber(number)\r\n\t\t\t\treturn startsWith\r\n\t\t\t\t(\r\n\t\t\t\t\tnormalizedCandidate.slice(fromIndex - formattedNumberGroups[i].length),\r\n\t\t\t\t\t nationalSignificantNumber\r\n\t\t\t\t)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// The check here makes sure that we haven't mistakenly already used the extension to\r\n\t// match the last group of the subscriber number. Note the extension cannot have\r\n\t// formatting in-between digits.\r\n\treturn normalizedCandidate.slice(fromIndex).contains(number.getExtension())\r\n}","import LRUCache from './LRUCache.js'\r\n\r\n// A cache for frequently used country-specific regular expressions. Set to 32 to cover ~2-3\r\n// countries being used for the same doc with ~10 patterns for each country. Some pages will have\r\n// a lot more countries in use, but typically fewer numbers for each so expanding the cache for\r\n// that use-case won't have a lot of benefit.\r\nexport default class RegExpCache {\r\n\tconstructor(size) {\r\n\t\tthis.cache = new LRUCache(size)\r\n\t}\r\n\r\n\tgetPatternForRegExp(pattern) {\r\n\t\tlet regExp = this.cache.get(pattern)\r\n\t\tif (!regExp) {\r\n\t\t\tregExp = new RegExp('^' + pattern)\r\n\t\t\tthis.cache.put(pattern, regExp)\r\n\t\t}\r\n\t\treturn regExp\r\n\t}\r\n}","// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\nimport { PLUS_CHARS } from '../constants.js'\r\nimport { limit } from './util.js'\r\n\r\nimport {\r\n\tisLatinLetter,\r\n\tisInvalidPunctuationSymbol\r\n} from './utf-8.js'\r\n\r\nconst OPENING_PARENS = '(\\\\[\\uFF08\\uFF3B'\r\nconst CLOSING_PARENS = ')\\\\]\\uFF09\\uFF3D'\r\nconst NON_PARENS = `[^${OPENING_PARENS}${CLOSING_PARENS}]`\r\n\r\nexport const LEAD_CLASS = `[${OPENING_PARENS}${PLUS_CHARS}]`\r\n\r\n// Punctuation that may be at the start of a phone number - brackets and plus signs.\r\nconst LEAD_CLASS_LEADING = new RegExp('^' + LEAD_CLASS)\r\n\r\n// Limit on the number of pairs of brackets in a phone number.\r\nconst BRACKET_PAIR_LIMIT = limit(0, 3)\r\n\r\n/**\r\n * Pattern to check that brackets match. Opening brackets should be closed within a phone number.\r\n * This also checks that there is something inside the brackets. Having no brackets at all is also\r\n * fine.\r\n *\r\n * An opening bracket at the beginning may not be closed, but subsequent ones should be. It's\r\n * also possible that the leading bracket was dropped, so we shouldn't be surprised if we see a\r\n * closing bracket first. We limit the sets of brackets in a phone number to four.\r\n */\r\nconst MATCHING_BRACKETS_ENTIRE = new RegExp\r\n(\r\n\t'^'\r\n\t+ \"(?:[\" + OPENING_PARENS + \"])?\" + \"(?:\" + NON_PARENS + \"+\" + \"[\" + CLOSING_PARENS + \"])?\"\r\n\t+ NON_PARENS + \"+\"\r\n\t+ \"(?:[\" + OPENING_PARENS + \"]\" + NON_PARENS + \"+[\" + CLOSING_PARENS + \"])\" + BRACKET_PAIR_LIMIT\r\n\t+ NON_PARENS + \"*\"\r\n\t+ '$'\r\n)\r\n\r\n/**\r\n * Matches strings that look like publication pages. Example:\r\n * <pre>Computing Complete Answers to Queries in the Presence of Limited Access Patterns.\r\n * Chen Li. VLDB J. 12(3): 211-227 (2003).</pre>\r\n *\r\n * The string \"211-227 (2003)\" is not a telephone number.\r\n */\r\nconst PUB_PAGES = /\\d{1,5}-+\\d{1,5}\\s{0,4}\\(\\d{1,4}/\r\n\r\nexport default function isValidCandidate(candidate, offset, text, leniency)\r\n{\r\n\t// Check the candidate doesn't contain any formatting\r\n\t// which would indicate that it really isn't a phone number.\r\n\tif (!MATCHING_BRACKETS_ENTIRE.test(candidate) || PUB_PAGES.test(candidate)) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// If leniency is set to VALID or stricter, we also want to skip numbers that are surrounded\r\n\t// by Latin alphabetic characters, to skip cases like abc8005001234 or 8005001234def.\r\n\tif (leniency !== 'POSSIBLE')\r\n\t{\r\n\t\t// If the candidate is not at the start of the text,\r\n\t\t// and does not start with phone-number punctuation,\r\n\t\t// check the previous character.\r\n\t\tif (offset > 0 && !LEAD_CLASS_LEADING.test(candidate))\r\n\t\t{\r\n\t\t\tconst previousChar = text[offset - 1]\r\n\t\t\t// We return null if it is a latin letter or an invalid punctuation symbol.\r\n\t\t\tif (isInvalidPunctuationSymbol(previousChar) || isLatinLetter(previousChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst lastCharIndex = offset + candidate.length\r\n\t\tif (lastCharIndex < text.length)\r\n\t\t{\r\n\t\t\tconst nextChar = text[lastCharIndex]\r\n\t\t\tif (isInvalidPunctuationSymbol(nextChar) || isLatinLetter(nextChar)) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}","// Matches strings that look like dates using \"/\" as a separator.\r\n// Examples: 3/10/2011, 31/10/96 or 08/31/95.\r\nconst SLASH_SEPARATED_DATES = /(?:(?:[0-3]?\\d\\/[01]?\\d)|(?:[01]?\\d\\/[0-3]?\\d))\\/(?:[12]\\d)?\\d{2}/\r\n\r\n// Matches timestamps.\r\n// Examples: \"2012-01-02 08:00\".\r\n// Note that the reg-ex does not include the\r\n// trailing \":\\d\\d\" -- that is covered by TIME_STAMPS_SUFFIX.\r\nconst TIME_STAMPS = /[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$/\r\nconst TIME_STAMPS_SUFFIX_LEADING = /^:[0-5]\\d/\r\n\r\nexport default function isValidPreCandidate(candidate, offset, text)\r\n{\r\n\t// Skip a match that is more likely to be a date.\r\n\tif (SLASH_SEPARATED_DATES.test(candidate)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Skip potential time-stamps.\r\n\tif (TIME_STAMPS.test(candidate))\r\n\t{\r\n\t\tconst followingText = text.slice(offset + candidate.length)\r\n\t\tif (TIME_STAMPS_SUFFIX_LEADING.test(followingText)) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t}\r\n\r\n\treturn true\r\n}","import parsePhoneNumber from '../parsePhoneNumber.js'\r\n\r\n/**\r\n * Matches a phone number object against a phone number string.\r\n * @param {string} phoneNumberString\r\n * @param {PhoneNumber} phoneNumber\r\n * @param {object} metadata — Metadata JSON\r\n * @return {'INVALID_NUMBER'|'NO_MATCH'|'SHORT_NSN_MATCH'|'NSN_MATCH'|'EXACT_MATCH'}\r\n */\r\nexport default function matchPhoneNumberStringAgainstPhoneNumber(phoneNumberString, phoneNumber, metadata) {\r\n\t// Parse `phoneNumberString`.\r\n\tlet phoneNumberStringContainsCallingCode = true\r\n\tlet parsedPhoneNumber = parsePhoneNumber(phoneNumberString, metadata)\r\n\tif (!parsedPhoneNumber) {\r\n\t\t// If `phoneNumberString` didn't contain a country calling code\r\n\t\t// then substitute it with the `phoneNumber`'s country calling code.\r\n\t\tphoneNumberStringContainsCallingCode = false\r\n\t\tparsedPhoneNumber = parsePhoneNumber(phoneNumberString, { defaultCallingCode: phoneNumber.countryCallingCode }, metadata)\r\n\t}\r\n\tif (!parsedPhoneNumber) {\r\n\t\treturn 'INVALID_NUMBER'\r\n\t}\r\n\r\n\t// Check that the extensions match.\r\n\tif (phoneNumber.ext) {\r\n\t\tif (parsedPhoneNumber.ext !== phoneNumber.ext) {\r\n\t\t\treturn 'NO_MATCH'\r\n\t\t}\r\n\t} else {\r\n\t\tif (parsedPhoneNumber.ext) {\r\n\t\t\treturn 'NO_MATCH'\r\n\t\t}\r\n\t}\r\n\r\n\t// Check that country calling codes match.\r\n\tif (phoneNumberStringContainsCallingCode) {\r\n\t\tif (phoneNumber.countryCallingCode !== parsedPhoneNumber.countryCallingCode) {\r\n\t\t\treturn 'NO_MATCH'\r\n\t\t}\r\n\t}\r\n\r\n\t// Check if the whole numbers match.\r\n\tif (phoneNumber.number === parsedPhoneNumber.number) {\r\n\t\tif (phoneNumberStringContainsCallingCode) {\r\n\t\t\treturn 'EXACT_MATCH'\r\n\t\t} else {\r\n\t\t\treturn 'NSN_MATCH'\r\n\t\t}\r\n\t}\r\n\r\n\t// Check if one national number is a \"suffix\" of the other.\r\n\tif (\r\n\t\tphoneNumber.nationalNumber.indexOf(parsedPhoneNumber.nationalNumber) === 0 ||\r\n\t\tparsedPhoneNumber.nationalNumber.indexOf(phoneNumber.nationalNumber) === 0\r\n\t) {\r\n\t\t// \"A SHORT_NSN_MATCH occurs if there is a difference because of the\r\n\t\t// presence or absence of an 'Italian leading zero', the presence or\r\n\t\t// absence of an extension, or one NSN being a shorter variant of the\r\n\t\t// other.\"\r\n\t\treturn 'SHORT_NSN_MATCH'\r\n\t}\r\n\r\n\treturn 'NO_MATCH'\r\n}","import { trimAfterFirstMatch } from './util.js'\r\n\r\n// Regular expression of characters typically used to start a second phone number for the purposes\r\n// of parsing. This allows us to strip off parts of the number that are actually the start of\r\n// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this\r\n// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second\r\n// extension so that the first number is parsed correctly.\r\n//\r\n// Matches a slash (\\ or /) followed by a space followed by an `x`.\r\n//\r\nconst SECOND_NUMBER_START_PATTERN = /[\\\\/] *x/\r\n\r\nexport default function parsePreCandidate(candidate)\r\n{\r\n\t// Check for extra numbers at the end.\r\n\t// TODO: This is the place to start when trying to support extraction of multiple phone number\r\n\t// from split notations (+41 79 123 45 67 / 68).\r\n\treturn trimAfterFirstMatch(SECOND_NUMBER_START_PATTERN, candidate)\r\n}","// Javascript doesn't support UTF-8 regular expressions.\r\n// So mimicking them here.\r\n\r\n// Copy-pasted from `PhoneNumberMatcher.js`.\r\n\r\n/**\r\n * \"\\p{Z}\" is any kind of whitespace or invisible separator (\"Separator\").\r\n * http://www.regular-expressions.info/unicode.html\r\n * \"\\P{Z}\" is the reverse of \"\\p{Z}\".\r\n * \"\\p{N}\" is any kind of numeric character in any script (\"Number\").\r\n * \"\\p{Nd}\" is a digit zero through nine in any script except \"ideographic scripts\" (\"Decimal_Digit_Number\").\r\n * \"\\p{Sc}\" is a currency symbol (\"Currency_Symbol\").\r\n * \"\\p{L}\" is any kind of letter from any language (\"Letter\").\r\n * \"\\p{Mn}\" is \"non-spacing mark\".\r\n *\r\n * Javascript doesn't support Unicode Regular Expressions\r\n * so substituting it with this explicit set of characters.\r\n *\r\n * https://stackoverflow.com/questions/13210194/javascript-regex-equivalent-of-a-za-z-using-pl\r\n * https://github.com/danielberndt/babel-plugin-utf-8-regex/blob/master/src/transformer.js\r\n */\r\n\r\nconst _pZ = '\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\r\nexport const pZ = `[${_pZ}]`\r\nexport const PZ = `[^${_pZ}]`\r\n\r\nexport const _pN = '\\u0030-\\u0039\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D66-\\u0D75\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\n// const pN = `[${_pN}]`\r\n\r\nconst _pNd = '\\u0030-\\u0039\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19'\r\nexport const pNd = `[${_pNd}]`\r\n\r\nexport const _pL = '\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC'\r\nconst pL = `[${_pL}]`\r\nconst pL_regexp = new RegExp(pL)\r\n\r\nconst _pSc = '\\u0024\\u00A2-\\u00A5\\u058F\\u060B\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20B9\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6'\r\nconst pSc = `[${_pSc}]`\r\nconst pSc_regexp = new RegExp(pSc)\r\n\r\nconst _pMn = '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u08FE\\u0900-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1DC0-\\u1DE6\\u1DFC-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE26'\r\nconst pMn = `[${_pMn}]`\r\nconst pMn_regexp = new RegExp(pMn)\r\n\r\nconst _InBasic_Latin = '\\u0000-\\u007F'\r\nconst _InLatin_1_Supplement = '\\u0080-\\u00FF'\r\nconst _InLatin_Extended_A = '\\u0100-\\u017F'\r\nconst _InLatin_Extended_Additional = '\\u1E00-\\u1EFF'\r\nconst _InLatin_Extended_B = '\\u0180-\\u024F'\r\nconst _InCombining_Diacritical_Marks = '\\u0300-\\u036F'\r\n\r\nconst latinLetterRegexp = new RegExp\r\n(\r\n\t'[' +\r\n\t_InBasic_Latin +\r\n\t_InLatin_1_Supplement +\r\n\t_InLatin_Extended_A +\r\n\t_InLatin_Extended_Additional +\r\n\t_InLatin_Extended_B +\r\n\t_InCombining_Diacritical_Marks +\r\n\t']'\r\n)\r\n\r\n/**\r\n * Helper method to determine if a character is a Latin-script letter or not.\r\n * For our purposes, combining marks should also return true since we assume\r\n * they have been added to a preceding Latin character.\r\n */\r\nexport function isLatinLetter(letter)\r\n{\r\n\t// Combining marks are a subset of non-spacing-mark.\r\n\tif (!pL_regexp.test(letter) && !pMn_regexp.test(letter)) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn latinLetterRegexp.test(letter)\r\n}\r\n\r\nexport function isInvalidPunctuationSymbol(character)\r\n{\r\n\treturn character === '%' || pSc_regexp.test(character)\r\n}","/** Returns a regular expression quantifier with an upper and lower limit. */\r\nexport function limit(lower, upper)\r\n{\r\n\tif ((lower < 0) || (upper <= 0) || (upper < lower)) {\r\n\t\tthrow new TypeError()\r\n\t}\r\n\treturn `{${lower},${upper}}`\r\n}\r\n\r\n/**\r\n * Trims away any characters after the first match of {@code pattern} in {@code candidate},\r\n * returning the trimmed version.\r\n */\r\nexport function trimAfterFirstMatch(regexp, string)\r\n{\r\n\tconst index = string.search(regexp)\r\n\r\n\tif (index >= 0) {\r\n\t\treturn string.slice(0, index)\r\n\t}\r\n\r\n\treturn string\r\n}\r\n\r\nexport function startsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring) === 0\r\n}\r\n\r\nexport function endsWith(string, substring)\r\n{\r\n\treturn string.indexOf(substring, string.length - substring.length) === string.length - substring.length\r\n}\r\n","import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\nimport normalizeArguments from './normalizeArguments.js'\r\n\r\nexport default function findPhoneNumbersInText() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\tconst matcher = new PhoneNumberMatcher(text, { ...options, v2: true }, metadata)\r\n\tconst results = []\r\n\twhile (matcher.hasNext()) {\r\n\t\tresults.push(matcher.next())\r\n\t}\r\n\treturn results\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\nimport Metadata, { getCountryCallingCode } from './metadata.js'\r\nimport getIddPrefix from './helpers/getIddPrefix.js'\r\nimport { formatRFC3966 } from './helpers/RFC3966.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tformatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}`\r\n}\r\n\r\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\nexport default function formatNumber(input, format, options, metadata) {\r\n\t// Apply default options.\r\n\tif (options) {\r\n\t\toptions = { ...DEFAULT_OPTIONS, ...options }\r\n\t} else {\r\n\t\toptions = DEFAULT_OPTIONS\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (input.country && input.country !== '001') {\r\n\t\t// Validate `input.country`.\r\n\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t}\r\n\t\tmetadata.country(input.country)\r\n\t}\r\n\telse if (input.countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t}\r\n\telse return input.phone || ''\r\n\r\n\tconst countryCallingCode = metadata.countryCallingCode()\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// This variable should have been declared inside `case`s\r\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\r\n\tlet number\r\n\r\n\tswitch (format) {\r\n\t\tcase 'NATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'INTERNATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn `+${countryCallingCode}`\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\r\n\t\t\tnumber = `+${countryCallingCode} ${number}`\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'E.164':\r\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\r\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\r\n\r\n\t\tcase 'RFC3966':\r\n\t\t\treturn formatRFC3966({\r\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\r\n\t\t\t\text: input.ext\r\n\t\t\t})\r\n\r\n\t\t// For reference, here's Google's IDD formatter:\r\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\r\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\r\n\t\t// Who would even need to format phone numbers in IDD format anyway?\r\n\t\tcase 'IDD':\r\n\t\t\tif (!options.fromCountry) {\r\n\t\t\t\treturn\r\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\r\n\t\t\t}\r\n\t\t\tconst formattedNumber = formatIDD(\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tinput.carrierCode,\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\toptions.fromCountry,\r\n\t\t\t\tmetadata\r\n\t\t\t)\r\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\r\n\t}\r\n}\r\n\r\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\r\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\r\n\tif (!format) {\r\n\t\treturn number\r\n\t}\r\n\treturn formatNationalNumberUsingFormat(\r\n\t\tnumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\r\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true,\r\n\t\t\tcarrierCode,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport function chooseFormatForNumber(availableFormats, nationalNnumber) {\r\n\tfor (const format of availableFormats) {\r\n\t\t// Validate leading digits.\r\n\t\t// The test case for \"else path\" could be found by searching for\r\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\r\n\t\tif (format.leadingDigitsPatterns().length > 0) {\r\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\r\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\r\n\t\t\t// If leading digits don't match then move on to the next phone number format\r\n\t\t\tif (nationalNnumber.search(lastLeadingDigitsPattern) !== 0) {\r\n\t\t\t\tcontinue\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Check that the national number matches the phone number format regular expression\r\n\t\tif (matchesEntirely(nationalNnumber, format.pattern())) {\r\n\t\t\treturn format\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\r\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\r\n}\r\n\r\nfunction formatIDD(\r\n\tnationalNumber,\r\n\tcarrierCode,\r\n\tcountryCallingCode,\r\n\tfromCountry,\r\n\tmetadata\r\n) {\r\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\r\n\t// When calling within the same country calling code.\r\n\tif (fromCountryCallingCode === countryCallingCode) {\r\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\r\n\t\t// For NANPA regions, return the national format for these regions\r\n\t\t// but prefix it with the country calling code.\r\n\t\tif (countryCallingCode === '1') {\r\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\r\n\t\t}\r\n\t\t// If regions share a country calling code, the country calling code need\r\n\t\t// not be dialled. This also applies when dialling within a region, so this\r\n\t\t// if clause covers both these cases. Technically this is the case for\r\n\t\t// dialling from La Reunion to other overseas departments of France (French\r\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\r\n\t\t// this edge case for now and for those cases return the version including\r\n\t\t// country calling code. Details here:\r\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\r\n\t\t//\r\n\t\treturn formattedNumber\r\n\t}\r\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\r\n\tif (iddPrefix) {\r\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\r\n\t}\r\n}","import AsYouType from './AsYouType.js'\r\n\r\n/**\r\n * Formats a (possibly incomplete) phone number.\r\n * The phone number can be either in E.164 format\r\n * or in a form of national number digits.\r\n * @param {string} value - A possibly incomplete phone number. Either in E.164 format or in a form of national number digits.\r\n * @param {string?} country - Two-letter (\"ISO 3166-1 alpha-2\") country code.\r\n * @return {string} Formatted (possibly incomplete) phone number.\r\n */\r\nexport default function formatIncompletePhoneNumber(value, country, metadata) {\r\n\tif (!metadata) {\r\n\t\tmetadata = country\r\n\t\tcountry = undefined\r\n\t}\r\n\treturn new AsYouType(country, metadata).input(value)\r\n}","import Metadata from './metadata.js'\r\n\r\nexport default function getCountries(metadata) {\r\n\treturn new Metadata(metadata).getCountries()\r\n}","// Deprecated. Import from 'metadata.js' directly instead.\r\nexport { getCountryCallingCode as default } from './metadata.js'","import PhoneNumber from './PhoneNumber.js'\r\n\r\nexport default function getExampleNumber(country, examples, metadata) {\r\n\tif (examples[country]) {\r\n\t\treturn new PhoneNumber(country, examples[country], metadata)\r\n\t}\r\n}","import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}","import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}","import mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for the country based on its length.\r\n// Should only be called for the \"new\" metadata which has \"possible lengths\".\r\nexport function checkNumberLengthForType(nationalNumber, type, metadata) {\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"<possiblePengths/>\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}","import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t + explicitExtn + \"|\"\r\n\t + ambiguousExtn + \"|\"\r\n\t + americanStyleExtnWithSuffix + \"|\"\r\n\t + autoDiallingExtn + \"|\"\r\n\t + onlyCommasExtn;\r\n}","import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Default country.\r\n * @param {string} [callingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tlet isNumberWithIddPrefix\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country, callingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tisNumberWithIddPrefix = true\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || callingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tcallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\t// No need to set it to `UNSPECIFIED`. It can be just `undefined`.\r\n\t\t\t\t// countryCallingCodeSource: 'UNSPECIFIED',\r\n\t\t\t\tnumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}\r\n\r\n// The possible values for the returned `countryCallingCodeSource` are:\r\n//\r\n// Copy-pasted from:\r\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\r\n//\r\n// // The source from which the country_code is derived. This is not set in the\r\n// // general parsing method, but in the method that parses and keeps raw_input.\r\n// // New fields could be added upon request.\r\n// enum CountryCodeSource {\r\n// // Default value returned if this is not set, because the phone number was\r\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\r\n// // return false if this is the case.\r\n// UNSPECIFIED = 0;\r\n//\r\n// // The country_code is derived based on a phone number with a leading \"+\",\r\n// // e.g. the French number \"+33 1 42 68 53 00\".\r\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\r\n//\r\n// // The country_code is derived based on a phone number with a leading IDD,\r\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\r\n// FROM_NUMBER_WITH_IDD = 5;\r\n//\r\n// // The country_code is derived based on a phone number without a leading\r\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\r\n// // supplied as France.\r\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\r\n//\r\n// // The country_code is derived NOT based on the phone number itself, but\r\n// // from the defaultCountry parameter provided in the parsing function by the\r\n// // clients. This happens mostly for numbers written in the national format\r\n// // (without country code). For example, this would be set when parsing the\r\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\r\n// // France.\r\n// FROM_DEFAULT_COUNTRY = 20;\r\n// }","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string?} country\r\n * @param {string?} callingCode\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tcallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country ? getCountryCallingCode(country, metadata) : callingCode\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country, callingCode)\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t\t&&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn { number }\r\n}","import extractPhoneContext, {\r\n\tisPhoneContextValid,\r\n\tPLUS_SIGN,\r\n\tRFC3966_PREFIX_,\r\n\tRFC3966_PHONE_CONTEXT_,\r\n\tRFC3966_ISDN_SUBADDRESS_\r\n} from './extractPhoneContext.js'\r\n\r\nimport ParseError from '../ParseError.js'\r\n\r\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\r\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, {\r\n\textractFormattedPhoneNumber\r\n}) {\r\n\tconst phoneContext = extractPhoneContext(numberToParse)\r\n\tif (!isPhoneContextValid(phoneContext)) {\r\n\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t}\r\n\r\n\tlet phoneNumberString\r\n\r\n\tif (phoneContext === null) {\r\n\t\t// Extract a possible number from the string passed in.\r\n\t\t// (this strips leading characters that could not be the start of a phone number)\r\n\t\tphoneNumberString = extractFormattedPhoneNumber(numberToParse) || ''\r\n\t} else {\r\n\t\tphoneNumberString = ''\r\n\r\n\t\t// If the phone context contains a phone number prefix, we need to capture\r\n\t\t// it, whereas domains will be ignored.\r\n\t\tif (phoneContext.charAt(0) === PLUS_SIGN) {\r\n\t\t\tphoneNumberString += phoneContext\r\n\t\t}\r\n\r\n\t\t// Now append everything between the \"tel:\" prefix and the phone-context.\r\n\t\t// This should include the national number, an optional extension or\r\n\t\t// isdn-subaddress component. Note we also handle the case when \"tel:\" is\r\n\t\t// missing, as we have seen in some of the phone number inputs.\r\n\t\t// In that case, we append everything from the beginning.\r\n\t\tconst indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_)\r\n\t\tlet indexOfNationalNumber\r\n\t\t// RFC 3966 \"tel:\" prefix is preset at this stage because\r\n\t\t// `isPhoneContextValid()` requires it to be present.\r\n\t\t/* istanbul ignore else */\r\n\t\tif (indexOfRfc3966Prefix >= 0) {\r\n\t\t\tindexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length\r\n\t\t} else {\r\n\t\t\tindexOfNationalNumber = 0\r\n\t\t}\r\n\t\tconst indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t\tphoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext)\r\n\t}\r\n\r\n\t// Delete the isdn-subaddress and everything after it if it is present.\r\n\t// Note extension won't appear at the same time with isdn-subaddress\r\n\t// according to paragraph 5.3 of the RFC3966 spec.\r\n\tconst indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_)\r\n\tif (indexOfIsdn > 0) {\r\n\t\tphoneNumberString = phoneNumberString.substring(0, indexOfIsdn)\r\n\t}\r\n\t// If both phone context and isdn-subaddress are absent but other\r\n\t// parameters are present, the parameters are left in nationalNumber.\r\n\t// This is because we are concerned about deleting content from a potential\r\n\t// number string when there is no strong evidence that the number is\r\n\t// actually written in RFC3966.\r\n\r\n\tif (phoneNumberString !== '') {\r\n\t\treturn phoneNumberString\r\n\t}\r\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.possibleLengths()) {\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n return {\r\n \tnationalNumber: number\r\n }\r\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\r\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\r\n// Example: `\"tel:12133734253;phone-context=+1\"`.\r\n// This function parses the full phone number from the local number and the `phone-context`\r\n// when the `phone-context` contains a `+` sign.\r\n\r\nimport {\r\n VALID_DIGITS,\r\n // PLUS_CHARS\r\n} from '../constants.js'\r\n\r\nexport const PLUS_SIGN = '+'\r\n\r\nconst RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?'\r\n\r\nconst RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')'\r\n\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_ =\r\n\t'^' +\r\n\t'\\\\' +\r\n\tPLUS_SIGN +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'[' + VALID_DIGITS + ']' +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'$'\r\n\r\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g')\r\n\r\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\r\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\r\nconst ALPHANUM_ = VALID_DIGITS\r\n\r\nconst RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst VALID_ALPHA_ = 'a-zA-Z'\r\nconst RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$'\r\n\r\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g')\r\n\r\nexport const RFC3966_PREFIX_ = 'tel:'\r\nexport const RFC3966_PHONE_CONTEXT_ = ';phone-context='\r\nexport const RFC3966_ISDN_SUBADDRESS_ = ';isub='\r\n\r\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\r\nexport default function extractPhoneContext(numberToExtractFrom) {\r\n\tconst indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t// If no phone-context parameter is present\r\n\tif (indexOfPhoneContext < 0) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length\r\n\t// If phone-context parameter is empty\r\n\tif (phoneContextStart >= numberToExtractFrom.length) {\r\n\t\treturn ''\r\n\t}\r\n\r\n\tconst phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart)\r\n\t// If phone-context is not the last parameter\r\n\tif (phoneContextEnd >= 0) {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart, phoneContextEnd)\r\n\t} else {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart)\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\r\nexport function isPhoneContextValid(phoneContext) {\r\n\tif (phoneContext === null) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (phoneContext.length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Does phone-context value match pattern of global-number-digits or domainname.\r\n\treturn RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) ||\r\n\t\tRFC3966_DOMAINNAME_PATTERN_.test(phoneContext)\r\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default function getCountryByCallingCode(callingCode, nationalPhoneNumber, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn getCountryByNationalNumber(possibleCountries, nationalPhoneNumber, metadata.metadata)\r\n}","import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\nexport default function getCountryByNationalNumber(possibleCountries, nationalPhoneNumber, metadata) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\tfor (const country of possibleCountries) {\r\n\t\tmetadata.country(country)\r\n\t\t// \"Leading digits\" patterns are only defined for about 20% of all countries.\r\n\t\t// By definition, matching \"leading digits\" is a sufficient but not a necessary\r\n\t\t// condition for a phone number to belong to a country.\r\n\t\t// The point of \"leading digits\" check is that it's the fastest one to get a match.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\treturn country\r\n\t\t}\r\n\t}\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// For regions that have multiple IDD prefixes\r\n// a preferred IDD prefix is returned.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returned `{}`\r\n\t// meaning that the phone number is not a valid one.\r\n\tif (!input.country) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\ttype = metadata.type(type)\r\n\tif (!type || !type.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (type.possibleLengths() &&\r\n\t\ttype.possibleLengths().indexOf(nationalNumber.length) < 0) {\r\n\t\treturn false\r\n\t}\r\n\treturn matchesEntirely(nationalNumber, type.pattern())\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\r\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\tlet possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn []\r\n\t}\r\n\treturn possibleCountries.filter((country) => {\r\n\t\treturn couldNationalNumberBelongToCountry(nationalNumber, country, metadata)\r\n\t})\r\n}\r\n\r\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.selectNumberingPlan(country)\r\n\tif (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\r\n\t\treturn true\r\n\t}\r\n\treturn false\r\n}","import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n// Regular expression of viable phone numbers. This is location independent.\r\n// Checks we have at least three leading digits, and only valid punctuation,\r\n// alpha characters and digits in the phone number. Does not include extension\r\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n// used as a placeholder for carrier codes, for example in Brazilian phone\r\n// numbers. We also allow multiple '+' characters at the start.\r\n//\r\n// Corresponds to the following:\r\n// [digits]{minLengthNsn}|\r\n// plus_sign*\r\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n// The second expression restricts the number of digits to three or more, but\r\n// then allows them to be in international form, and to have alpha-characters\r\n// and punctuation. We split up the two reg-exes here and combine them when\r\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n// with ^ and append $ to each branch.\r\n//\r\n// \"Note VALID_PUNCTUATION starts with a -,\r\n// so must be the first in the range\" (c) Google devs.\r\n// (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regular_expression) {\r\n\t// If assigning the `''` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regular_expression + ')$').test(text)\r\n}","/**\r\n * Merges two arrays.\r\n * @param {*} a\r\n * @param {*} b\r\n * @return {*}\r\n */\r\nexport default function mergeArrays(a, b) {\r\n\tconst merged = a.slice()\r\n\r\n\tfor (const element of b) {\r\n\t\tif (a.indexOf(element) < 0) {\r\n\t\t\tmerged.push(element)\r\n\t\t}\r\n\t}\r\n\r\n\treturn merged.sort((a, b) => a - b)\r\n\r\n\t// ES6 version, requires Set polyfill.\r\n\t// let merged = new Set(a)\r\n\t// for (const element of b) {\r\n\t// \tmerged.add(i)\r\n\t// }\r\n\t// return Array.from(merged).sort((a, b) => a - b)\r\n}","// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}","import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}","import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.country(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\n\r\nexport default function isPossiblePhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isPossible() || false\r\n}","import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes()) {\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber from './parsePhoneNumber_.js'\r\n\r\nexport default function isValidPhoneNumber() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\tconst phoneNumber = parsePhoneNumber(text, options, metadata)\r\n\treturn phoneNumber && phoneNumber.isValid() || false\r\n}","import PhoneNumberMatcher from '../PhoneNumberMatcher.js'\r\nimport normalizeArguments from '../normalizeArguments.js'\r\n\r\nexport default function findNumbers() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\tconst results = []\r\n\twhile (matcher.hasNext()) {\r\n\t\tresults.push(matcher.next())\r\n\t}\r\n\treturn results\r\n}","// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport _findPhoneNumbers, { searchPhoneNumbers as _searchPhoneNumbers } from './findPhoneNumbersInitialImplementation.js'\r\nimport normalizeArguments from '../normalizeArguments.js'\r\n\r\nexport default function findPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _findPhoneNumbers(text, options, metadata)\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _searchPhoneNumbers(text, options, metadata)\r\n}","// This is a legacy function.\r\n// Use `findNumbers()` instead.\r\n\r\nimport {\r\n\tPLUS_CHARS,\r\n\tVALID_PUNCTUATION,\r\n\tVALID_DIGITS,\r\n\tWHITESPACE\r\n} from '../constants.js'\r\n\r\nimport parse from '../parse.js'\r\nimport { VALID_PHONE_NUMBER_WITH_EXTENSION } from '../helpers/isViablePhoneNumber.js'\r\nimport createExtensionPattern from '../helpers/extension/createExtensionPattern.js'\r\n\r\nimport parsePreCandidate from '../findNumbers/parsePreCandidate.js'\r\nimport isValidPreCandidate from '../findNumbers/isValidPreCandidate.js'\r\nimport isValidCandidate from '../findNumbers/isValidCandidate.js'\r\n\r\n/**\r\n * Regexp of all possible ways to write extensions, for use when parsing. This\r\n * will be run as a case-insensitive regexp match. Wide character versions are\r\n * also provided after each ASCII version. There are three regular expressions\r\n * here. The first covers RFC 3966 format, where the extension is added using\r\n * ';ext='. The second more generic one starts with optional white space and\r\n * ends with an optional full stop (.), followed by zero or more spaces/tabs\r\n * /commas and then the numbers themselves. The other one covers the special\r\n * case of American numbers where the extension is written with a hash at the\r\n * end, such as '- 503#'. Note that the only capturing groups should be around\r\n * the digits that you want to capture as part of the extension, or else parsing\r\n * will fail! We allow two options for representing the accented o - the\r\n * character itself, and one in the unicode decomposed form with the combining\r\n * acute accent.\r\n */\r\nexport const EXTN_PATTERNS_FOR_PARSING = createExtensionPattern('parsing')\r\n\r\nconst WHITESPACE_IN_THE_BEGINNING_PATTERN = new RegExp('^[' + WHITESPACE + ']+')\r\nconst PUNCTUATION_IN_THE_END_PATTERN = new RegExp('[' + VALID_PUNCTUATION + ']+$')\r\n\r\n// // Regular expression for getting opening brackets for a valid number\r\n// // found using `PHONE_NUMBER_START_PATTERN` for prepending those brackets to the number.\r\n// const BEFORE_NUMBER_DIGITS_PUNCTUATION = new RegExp('[' + OPENING_BRACKETS + ']+' + '[' + WHITESPACE + ']*' + '$')\r\n\r\nconst VALID_PRECEDING_CHARACTER_PATTERN = /[^a-zA-Z0-9]/\r\n\r\nexport default function findPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\tconst phones = []\r\n\twhile (search.hasNext()) {\r\n\t\tphones.push(search.next())\r\n\t}\r\n\treturn phones\r\n}\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport function searchPhoneNumbers(text, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\tconst search = new PhoneNumberSearch(text, options, metadata)\r\n\treturn {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t \t\tnext: () => {\r\n\t \t\t\tif (search.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: search.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a parseable phone number including any opening brackets, etc.\r\n * @param {string} text - Input.\r\n * @return {object} `{ ?number, ?startsAt, ?endsAt }`.\r\n */\r\nexport class PhoneNumberSearch {\r\n\tconstructor(text, options, metadata) {\r\n\t\tthis.text = text\r\n\t\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t\t// code coverage would decrease for some weird reason.\r\n\t\tthis.options = options || {}\r\n\t\tthis.metadata = metadata\r\n\r\n\t\t// Iteration tristate.\r\n\t\tthis.state = 'NOT_READY'\r\n\r\n\t\tthis.regexp = new RegExp(VALID_PHONE_NUMBER_WITH_EXTENSION, 'ig')\r\n\t}\r\n\r\n\tfind() {\r\n\t\tconst matches = this.regexp.exec(this.text)\r\n\t\tif (!matches) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tlet number = matches[0]\r\n\t\tlet startsAt = matches.index\r\n\r\n\t\tnumber = number.replace(WHITESPACE_IN_THE_BEGINNING_PATTERN, '')\r\n\t\tstartsAt += matches[0].length - number.length\r\n\t\t// Fixes not parsing numbers with whitespace in the end.\r\n\t\t// Also fixes not parsing numbers with opening parentheses in the end.\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/252\r\n\t\tnumber = number.replace(PUNCTUATION_IN_THE_END_PATTERN, '')\r\n\r\n\t\tnumber = parsePreCandidate(number)\r\n\r\n\t\tconst result = this.parseCandidate(number, startsAt)\r\n\t\tif (result) {\r\n\t\t\treturn result\r\n\t\t}\r\n\r\n\t\t// Tail recursion.\r\n\t\t// Try the next one if this one is not a valid phone number.\r\n\t\treturn this.find()\r\n\t}\r\n\r\n\tparseCandidate(number, startsAt) {\r\n\t\tif (!isValidPreCandidate(number, startsAt, this.text)) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Don't parse phone numbers which are non-phone numbers\r\n\t\t// due to being part of something else (e.g. a UUID).\r\n\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/213\r\n\t\t// Copy-pasted from Google's `PhoneNumberMatcher.js` (`.parseAndValidate()`).\r\n\t\tif (!isValidCandidate(number, startsAt, this.text, this.options.extended ? 'POSSIBLE' : 'VALID')) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// // Prepend any opening brackets left behind by the\r\n\t\t// // `PHONE_NUMBER_START_PATTERN` regexp.\r\n\t\t// const text_before_number = text.slice(this.searching_from, startsAt)\r\n\t\t// const full_number_starts_at = text_before_number.search(BEFORE_NUMBER_DIGITS_PUNCTUATION)\r\n\t\t// if (full_number_starts_at >= 0)\r\n\t\t// {\r\n\t\t// \tnumber = text_before_number.slice(full_number_starts_at) + number\r\n\t\t// \tstartsAt = full_number_starts_at\r\n\t\t// }\r\n\t\t//\r\n\t\t// this.searching_from = matches.lastIndex\r\n\r\n\t\tconst result = parse(number, this.options, this.metadata)\r\n\t\tif (!result.phone) {\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\tresult.startsAt = startsAt\r\n\t\tresult.endsAt = startsAt + number.length\r\n\t\treturn result\r\n\t}\r\n\r\n\thasNext() {\r\n\t\tif (this.state === 'NOT_READY') {\r\n\t\t\tthis.last_match = this.find()\r\n\t\t\tif (this.last_match) {\r\n\t\t\t\tthis.state = 'READY'\r\n\t\t\t} else {\r\n\t\t\t\tthis.state = 'DONE'\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.state === 'READY'\r\n\t}\r\n\r\n\tnext() {\r\n\t\t// Check the state and find the next match as a side-effect if necessary.\r\n\t\tif (!this.hasNext()) {\r\n\t\t\tthrow new Error('No next element')\r\n\t\t}\r\n\t\t// Don't retain that memory any longer than necessary.\r\n\t\tconst result = this.last_match\r\n\t\tthis.last_match = null\r\n\t\tthis.state = 'NOT_READY'\r\n\t\treturn result\r\n\t}\r\n}","import _formatNumber from '../format.js'\r\nimport parse from '../parse.js'\r\n\r\nexport default function formatNumber() {\r\n\tconst {\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t} = normalizeArguments(arguments)\r\n\r\n\treturn _formatNumber(input, format, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nfunction normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4, arg_5] = Array.prototype.slice.call(args)\r\n\r\n\tlet input\r\n\tlet format\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// Sort out arguments.\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `format('8005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If country code is supplied.\r\n\t\t// `format('8005553535', 'RU', 'NATIONAL', [options], metadata)`.\r\n\t\tif (typeof arg_3 === 'string')\r\n\t\t{\r\n\t\t\tformat = arg_3\r\n\r\n\t\t\tif (arg_5)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_4\r\n\t\t\t\tmetadata = arg_5\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { defaultCountry: arg_2, extended: true }, metadata)\r\n\t\t}\r\n\t\t// Just an international phone number is supplied\r\n\t\t// `format('+78005553535', 'NATIONAL', [options], metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (typeof arg_2 !== 'string')\r\n\t\t\t{\r\n\t\t\t\tthrow new Error('`format` argument not passed to `formatNumber(number, format)`')\r\n\t\t\t}\r\n\r\n\t\t\tformat = arg_2\r\n\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\tinput = parse(arg_1, { extended: true }, metadata)\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed number object.\r\n\t// `format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', [options], metadata)`.\r\n\telse if (is_object(arg_1))\r\n\t{\r\n\t\tinput = arg_1\r\n\t\tformat = arg_2\r\n\r\n\t\tif (arg_4)\r\n\t\t{\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\t// Legacy lowercase formats.\r\n\tif (format === 'International') {\r\n\t\tformat = 'INTERNATIONAL'\r\n\t} else if (format === 'National') {\r\n\t\tformat = 'NATIONAL'\r\n\t}\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\tformat,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'","import isViablePhoneNumber from '../helpers/isViablePhoneNumber.js'\r\nimport _getNumberType from '../helpers/getNumberType.js'\r\nimport parse from '../parse.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType() {\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\r\n\tif (!input.phone) {\r\n\t\treturn\r\n\t}\r\n\treturn _getNumberType(input, options, metadata)\r\n}\r\n\r\n// Sort out arguments\r\nexport function normalizeArguments(args)\r\n{\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet input\r\n\tlet options = {}\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `getNumberType('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string')\r\n\t{\r\n\t\t// If \"default country\" argument is being passed\r\n\t\t// then convert it to an `options` object.\r\n\t\t// `getNumberType('88005553535', 'RU', metadata)`.\r\n\t\tif (typeof arg_2 !== 'object')\r\n\t\t{\r\n\t\t\tif (arg_4)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_3\r\n\t\t\t\tmetadata = arg_4\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, { defaultCountry: arg_2 }, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// No \"resrict country\" argument is being passed.\r\n\t\t// International phone number is passed.\r\n\t\t// `getNumberType('+78005553535', metadata)`.\r\n\t\telse\r\n\t\t{\r\n\t\t\tif (arg_3)\r\n\t\t\t{\r\n\t\t\t\toptions = arg_2\r\n\t\t\t\tmetadata = arg_3\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tmetadata = arg_2\r\n\t\t\t}\r\n\r\n\t\t\t// `parse` extracts phone numbers from raw text,\r\n\t\t\t// therefore it will cut off all \"garbage\" characters,\r\n\t\t\t// while this `validate` function needs to verify\r\n\t\t\t// that the phone number contains no \"garbage\"\r\n\t\t\t// therefore the explicit `isViablePhoneNumber` check.\r\n\t\t\tif (isViablePhoneNumber(arg_1))\r\n\t\t\t{\r\n\t\t\t\tinput = parse(arg_1, undefined, metadata)\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tinput = {}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t// If the phone number is passed as a parsed phone number.\r\n\t// `getNumberType({ phone: '88005553535', country: 'RU' }, ...)`.\r\n\telse if (is_object(arg_1))\r\n\t{\r\n\t\tinput = arg_1\r\n\r\n\t\tif (arg_3)\r\n\t\t{\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new TypeError('A phone number must either be a string or an object of shape { phone, [country] }.')\r\n\r\n\treturn {\r\n\t\tinput,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'","import { normalizeArguments } from './getNumberType.js'\r\nimport _isPossibleNumber from '../isPossible.js'\r\n\r\n/**\r\n * Checks if a given phone number is possible.\r\n * Which means it only checks phone number length\r\n * and doesn't test any regular expressions.\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isPossibleNumber('+78005553535', metadata)\r\n * isPossibleNumber('8005553535', 'RU', metadata)\r\n * isPossibleNumber('88005553535', 'RU', metadata)\r\n * isPossibleNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isPossibleNumber() {\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\r\n\tif (!input.phone && !(options && options.v2)) {\r\n\t\treturn false\r\n\t}\r\n\treturn _isPossibleNumber(input, options, metadata)\r\n}","import _isValidNumber from '../isValid.js'\r\nimport { normalizeArguments } from './getNumberType.js'\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function isValidNumber() {\r\n\tconst { input, options, metadata } = normalizeArguments(arguments)\r\n\t// `parseNumber()` would return `{}` when no phone number could be parsed from the input.\r\n\tif (!input.phone) {\r\n\t\treturn false\r\n\t}\r\n\treturn _isValidNumber(input, options, metadata)\r\n}","import isViablePhoneNumber from '../helpers/isViablePhoneNumber.js'\r\nimport parseNumber from '../parse.js'\r\nimport _isValidNumberForRegion from './isValidNumberForRegion_.js'\r\n\r\n// This function has been deprecated and is not exported as\r\n// `isValidPhoneNumberForCountry()` or `isValidPhoneNumberForRegion()`.\r\n//\r\n// The rationale is:\r\n//\r\n// * We don't use the \"region\" word, so \"country\" would be better.\r\n//\r\n// * It could be substituted with:\r\n//\r\n// ```js\r\n// export default function isValidPhoneNumberForCountry(phoneNumberString, country) {\r\n// \tconst phoneNumber = parsePhoneNumber(phoneNumberString, {\r\n// \t\tdefaultCountry: country,\r\n// \t\t// Demand that the entire input string must be a phone number.\r\n// \t\t// Otherwise, it would \"extract\" a phone number from an input string.\r\n// \t\textract: false\r\n// \t})\r\n// \tif (!phoneNumber) {\r\n// \t\treturn false\r\n// \t}\r\n// \tif (phoneNumber.country !== country) {\r\n// \t\treturn false\r\n// \t}\r\n// \treturn phoneNumber.isValid()\r\n// }\r\n// ```\r\n//\r\n// * Same function could be used for `isPossiblePhoneNumberForCountry()`\r\n// by replacing `isValid()` with `isPossible()`.\r\n//\r\n// * The reason why this function is not exported is because its result is ambiguous.\r\n// Suppose `false` is returned. It could mean any of:\r\n// * Not a phone number.\r\n// * The phone number is valid but belongs to another country or another calling code.\r\n// * The phone number belongs to the correct country but is not valid digit-wise.\r\n// All those three cases should be handled separately from a \"User Experience\" standpoint.\r\n// Simply showing \"Invalid phone number\" error in all of those cases would be lazy UX.\r\n\r\nexport default function isValidNumberForRegion(number, country, metadata) {\r\n\tif (typeof number !== 'string') {\r\n\t\tthrow new TypeError('number must be a string')\r\n\t}\r\n\tif (typeof country !== 'string') {\r\n\t\tthrow new TypeError('country must be a string')\r\n\t}\r\n\t// `parse` extracts phone numbers from raw text,\r\n\t// therefore it will cut off all \"garbage\" characters,\r\n\t// while this `validate` function needs to verify\r\n\t// that the phone number contains no \"garbage\"\r\n\t// therefore the explicit `isViablePhoneNumber` check.\r\n\tlet input\r\n\tif (isViablePhoneNumber(number)) {\r\n\t\tinput = parseNumber(number, { defaultCountry: country }, metadata)\r\n\t} else {\r\n\t\tinput = {}\r\n\t}\r\n\treturn _isValidNumberForRegion(input, country, undefined, metadata)\r\n}","import isValidNumber from '../isValid.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid within a given region.\r\n * Is just an alias for `phoneNumber.isValid() && phoneNumber.country === country`.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n */\r\nexport default function isValidNumberForRegion(input, country, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\treturn input.country === country && isValidNumber(input, options, metadata)\r\n}","import _parseNumber from '../parse.js'\r\nimport normalizeArguments from '../normalizeArguments.js'\r\n\r\nexport default function parseNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn _parseNumber(text, options, metadata)\r\n}","import normalizeArguments from '../normalizeArguments.js'\r\nimport PhoneNumberMatcher from '../PhoneNumberMatcher.js'\r\n\r\n/**\r\n * @return ES6 `for ... of` iterator.\r\n */\r\nexport default function searchNumbers()\r\n{\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\r\n\tconst matcher = new PhoneNumberMatcher(text, options, metadata)\r\n\r\n\treturn {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t \t\tnext: () => {\r\n\t \t\t\tif (matcher.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: matcher.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import compare from './tools/semver-compare.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to\r\n\t// `country_calling_codes` in `1.0.18`.\r\n\tif (!is_object(metadata) || !is_object(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${is_object(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + type_of(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst is_object = _ => typeof _ === 'object'\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst type_of = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.country(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries[country] !== undefined\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }","// Extracts the following properties from function arguments:\r\n// * input `text`\r\n// * `options` object\r\n// * `metadata` JSON\r\nexport default function normalizeArguments(args) {\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}\r\n\r\n// Otherwise istanbul would show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst isObject = _ => typeof _ === 'object'","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants.js'\r\n\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\r\nimport extractExtension from './helpers/extension/extractExtension.js'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\nimport { isPossibleNumber } from './isPossible.js'\r\n// import { parseRFC3966 } from './helpers/RFC3966.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\r\nimport stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\n\r\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\tphoneNumber.__countryCallingCodeSource = countryCallingCodeSource\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// // Parse RFC 3966 phone number URI.\r\n\t// if (text && text.indexOf('tel:') === 0) {\r\n\t// \treturn parseRFC3966(text)\r\n\t// }\r\n\t// let number = extractFormattedPhoneNumber(text, extract, v2)\r\n\tlet number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\r\n\t\textractFormattedPhoneNumber: (text) => extractFormattedPhoneNumber(text, extract, v2)\r\n\t})\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCodeSource, countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// Choose a country by `countryCallingCode`.\r\n\tlet country\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// If `formattedPhoneNumber` is passed in \"national\" format\r\n\t// then `number` is defined and `countryCallingCode` is `undefined`.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn {\r\n\t\t\tcountryCallingCodeSource,\r\n\t\t\tcountryCallingCode\r\n\t\t}\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, nationalNumber, metadata)\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.country(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}","import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {object} meta - Optional custom use-case-specific metadata.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber_ from './parsePhoneNumber_.js'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n","import parsePhoneNumberWithError_ from './parsePhoneNumberWithError_.js'\r\nimport normalizeArguments from './normalizeArguments.js'\r\n\r\nexport default function parsePhoneNumberWithError() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumberWithError_(text, options, metadata)\r\n}","import parse from './parse.js'\r\n\r\nexport default function parsePhoneNumberWithError(text, options, metadata) {\r\n\treturn parse(text, { ...options, v2: true }, metadata)\r\n}","import parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumberWithError(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n","import PhoneNumberMatcher from './PhoneNumberMatcher.js'\r\nimport normalizeArguments from './normalizeArguments.js'\r\n\r\nexport default function searchPhoneNumbersInText() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\tconst matcher = new PhoneNumberMatcher(text, { ...options, v2: true }, metadata)\r\n\treturn {\r\n\t\t[Symbol.iterator]() {\r\n\t\t\treturn {\r\n\t \t\tnext: () => {\r\n\t \t\t\tif (matcher.hasNext()) {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tdone: false,\r\n\t\t\t\t\t\t\tvalue: matcher.next()\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdone: true\r\n\t\t\t\t\t}\r\n\t \t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n a = a.split('-')\r\n b = b.split('-')\r\n var pa = a[0].split('.')\r\n var pb = b[0].split('.')\r\n for (var i = 0; i < 3; i++) {\r\n var na = Number(pa[i])\r\n var nb = Number(pb[i])\r\n if (na > nb) return 1\r\n if (nb > na) return -1\r\n if (!isNaN(na) && isNaN(nb)) return 1\r\n if (isNaN(na) && !isNaN(nb)) return -1\r\n }\r\n if (a[1] && b[1]) {\r\n return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n }\r\n return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\nexport default function validatePhoneNumberLength() {\r\n\tlet { text, options, metadata } = normalizeArguments(arguments)\r\n\toptions = {\r\n\t\t...options,\r\n\t\textract: false\r\n\t}\r\n\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\tconst phoneNumber = parsePhoneNumberWithError(text, options, metadata)\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(phoneNumber.countryCallingCode)\r\n\t\tconst result = checkNumberLength(phoneNumber.nationalNumber, metadata)\r\n\t\tif (result !== 'IS_POSSIBLE') {\r\n\t\t\treturn result\r\n\t\t}\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\treturn error.message\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\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 &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\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}\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}\n\nexport { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/* underscore in name -> watch for changes */\nconst paramsList = ['modules', 'init', '_direction', 'oneWayMovement', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopedSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideNextClass', 'slidePrevClass', 'wrapperClass', 'lazyPreloaderClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren',\n// modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control', 'injectStyles', 'injectStylesUrls'];\nexport { paramsList };","import { isObject, extend } from './utils.js';\nfunction updateSwiper({\n swiper,\n slides,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n}) {\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n virtual,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n let loopNeedDestroy;\n let loopNeedEnable;\n let loopNeedReloop;\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n if (mod === 'navigation') {\n if (swiper.isElement) {\n swiper[mod].prevEl.remove();\n swiper[mod].nextEl.remove();\n }\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n if (swiper.isElement) {\n swiper[mod].el.remove();\n }\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n if (changedParams.includes('loop') && swiper.isElement) {\n if (currentParams.loop && !passedParams.loop) {\n loopNeedDestroy = true;\n } else if (!currentParams.loop && passedParams.loop) {\n loopNeedEnable = true;\n } else {\n loopNeedReloop = true;\n }\n }\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n } else {\n const newValue = passedParams[key];\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {\n virtual.slides = slides;\n virtual.update(true);\n }\n if (changedParams.includes('children') && slides && currentParams.loop) {\n loopNeedReloop = true;\n }\n if (needThumbsInit) {\n const initialized = thumbs.init();\n if (initialized) thumbs.update(true);\n }\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n if (needPaginationInit) {\n if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) {\n paginationEl = document.createElement('div');\n paginationEl.classList.add('swiper-pagination');\n swiper.el.shadowEl.appendChild(paginationEl);\n }\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n if (needScrollbarInit) {\n if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) {\n scrollbarEl = document.createElement('div');\n scrollbarEl.classList.add('swiper-scrollbar');\n swiper.el.shadowEl.appendChild(scrollbarEl);\n }\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n if (needNavigationInit) {\n if (swiper.isElement) {\n if (!nextEl || typeof nextEl === 'string') {\n nextEl = document.createElement('div');\n nextEl.classList.add('swiper-button-next');\n swiper.el.shadowEl.appendChild(nextEl);\n }\n if (!prevEl || typeof prevEl === 'string') {\n prevEl = document.createElement('div');\n prevEl.classList.add('swiper-button-prev');\n swiper.el.shadowEl.appendChild(prevEl);\n }\n }\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n if (loopNeedDestroy || loopNeedReloop) {\n swiper.loopDestroy();\n }\n if (loopNeedEnable || loopNeedReloop) {\n swiper.loopCreate();\n }\n swiper.update();\n}\nexport { updateSwiper };","function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).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 if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\nfunction needsNavigation(params = {}) {\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\nfunction needsPagination(params = {}) {\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\nfunction needsScrollbar(params = {}) {\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\nfunction uniqueClasses(classNames = '') {\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\nfunction attrToProp(attrName = '') {\n return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', ''));\n}\nfunction wrapperClass(className = '') {\n if (!className) return 'swiper-wrapper';\n if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`;\n return className;\n}\nexport { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses, attrToProp, wrapperClass };","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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 {\n point,\n value\n } = points[i];\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}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { extend } from '../../shared/utils.js';\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\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 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 if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\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 (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n }\n swiper.emit('breakpoint', breakpointParams);\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\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}\nexport default {\n checkOverflow\n};","function 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}\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\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}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","export default function removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { extend, now, deleteProps, createElement, elementChildren, elementStyle, elementIndex } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nimport { processLazyPreloader } from '../shared/process-lazy-preloader.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor(...args) {\n let el;\n let params;\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, params] = args;\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 // 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: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n evCache: []\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 getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\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 = 'current', exact = false) {\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\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 {\n snapGrid,\n params\n } = swiper;\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 (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.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 = true) {\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.shadowEl) {\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 : wrapperEl,\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 [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].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\n // Init Flag\n swiper.initialized = true;\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance = true, cleanStyles = true) {\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\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.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 default Swiper;","export default {\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 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 loopedSlides: null,\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 slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","/* eslint-disable no-underscore-dangle */\n\nexport default {\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(...args) {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\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(...args) {\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 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};","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nimport onLoad from './onLoad.js';\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n\n // Touch Events\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', 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\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 document = getDocument();\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.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 if (!dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nexport default {\n attachEvents,\n detachEvents\n};","export default function 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}","import { processLazyPreloader } from '../../shared/process-lazy-preloader.js';\nexport default function onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n swiper.update();\n}","let timeout;\nexport default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\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(timeout);\n timeout = 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}","export default function onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\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}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n if (pointerIndex >= 0) {\n data.evCache.splice(pointerIndex, 1);\n }\n if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\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 (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 // 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);\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.currentTranslate === data.startTranslate) {\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 (swiper.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 = swiper.params.virtual && swiper.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}","import { getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\nexport default function onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\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 (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\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 prevX: swiper.touches.currentX,\n prevY: swiper.touches.currentY,\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 if (e.targetTouches && e.targetTouches.length > 1) return;\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 && data.evCache.length > 1) {\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 if (!data.isMoved) {\n if (isLoop) {\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 if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n // need another loop fix\n swiper.loopFix({\n direction: swiper.swipeDirection,\n setTranslate: true\n });\n loopFixed = true;\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 && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : 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 && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : 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 (swiper.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}","import { getWindow, getDocument } from 'ssr-window';\nimport { now } from '../../shared/utils.js';\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base = this) {\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}\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n data.evCache.push(event);\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.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 e = event;\n if (e.originalEvent) e = e.originalEvent;\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 = event.composedPath ? event.composedPath() : event.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 const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\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 (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function 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}","export default function 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}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { elementChildren } from '../../shared/utils.js';\nexport default function loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n 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 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}","export default function loopFix({\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n} = {}) {\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\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 const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n let loopedSlides = params.loopedSlides || slidesPerView;\n if (loopedSlides % params.slidesPerGroup !== 0) {\n loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n }\n swiper.loopedSlides = loopedSlides;\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains('swiper-slide-active'))[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 // prepend last slides before start\n if (activeSlideIndex < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n prependSlidesIndexes.push(slides.length - index - 1);\n }\n } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / slides.length) * slides.length;\n appendSlidesIndexes.push(index);\n }\n }\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slidesEl.prepend(swiper.slides[index]);\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slidesEl.append(swiper.slides[index]);\n });\n }\n swiper.recalcSlides();\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.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n if (setTranslate) {\n swiper.slideToLoop(slideRealIndex, 0, false, true);\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.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n }\n }\n } else {\n swiper.slideToLoop(slideRealIndex, 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 slideTo: false,\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.params.loop) c.loopFix(loopParams);\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix(loopParams);\n }\n }\n swiper.emit('loopFix');\n}","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj = {}) {\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 (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\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}","import { getWindow } from 'ssr-window';\nimport { elementParents } from '../../../shared/utils.js';\nexport default function Observer({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const observers = [];\n const window = getWindow();\n const attach = (target, options = {}) => {\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.el);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.el, {\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}","import { getWindow } from 'ssr-window';\nexport default function Resize({\n swiper,\n on,\n emit\n}) {\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 {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(({\n contentBoxSize,\n contentRect,\n target\n }) => {\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}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\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 }\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}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\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 }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed = this.params.speed, runCallbacks = true, internal) {\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\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 {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\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 && 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}","import { elementChildren, nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\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}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\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}","export default function slideToLoop(index = 0, speed = this.params.speed, runCallbacks = true, internal) {\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\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 newIndex = swiper.getSlideIndex(swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === newIndex)[0]);\n }\n }\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n }\n swiper.emit('setTransition', duration, byController);\n}","export default function transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step\n}) {\n const {\n activeIndex,\n previousIndex\n } = swiper;\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}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\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}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\n const swiper = this;\n const {\n params\n } = swiper;\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}","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\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 if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\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 if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\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}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\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}","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export function getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\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}\nexport default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\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) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n }\n return;\n }\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (swiper.slides[activeIndex]) {\n realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","export default function 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.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\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}","export default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = e.closest(`.${params.slideClass}, swiper-slide`);\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}","export default function 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 {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\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.getSlideIndex(swiper.slides.filter(el => el.getAttribute('data-swiper-slide-index') === '0')[0]);\n const lastSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.getAttribute('data-swiper-slide-index') * 1 === swiper.slides.length - 1)[0]);\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}","import { elementStyle } from '../../shared/utils.js';\nexport default function 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}","import { elementChildren, elementOuterSize, elementStyle, setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n function getDirectionLabel(property) {\n if (swiper.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 function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\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 }\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(slidesLength);\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, slidesLength, getDirectionLabel);\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[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 {\n clientWidth,\n offsetWidth\n } = slide;\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[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 + params.spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + params.spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\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 (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : 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 + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.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 + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.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}","import { elementChildren, elementNextAll, elementPrevAll } from '../../shared/utils.js';\nexport default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\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 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 activeSlide = slides[activeIndex];\n }\n if (activeSlide) {\n // Active classes\n activeSlide.classList.add(params.slideActiveClass);\n\n // Next Slide\n let 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 // Prev Slide\n let 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 swiper.emitSlidesClasses();\n}","export default function 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;\n }\n}","export default function updateSlidesProgress(translate = this && this.translate || 0) {\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\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);\n });\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\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 + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + 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 slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}","import { attrToProp, extend } from '../components-shared/utils.js';\nimport { paramsList } from '../components-shared/params-list.js';\nimport defaults from '../core/defaults.js';\n\nconst formatValue = (val) => {\n if (parseFloat(val) === Number(val)) return Number(val);\n if (val === 'true') return true;\n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'null') return null;\n if (val === 'undefined') return undefined;\n return val;\n};\n\nconst modulesParamsList = [\n 'a11y',\n 'autoplay',\n 'controller',\n 'cards-effect',\n 'coverflow-effect',\n 'creative-effect',\n 'cube-effect',\n 'fade-effect',\n 'flip-effect',\n 'free-mode',\n 'grid',\n 'hash-navigation',\n 'history',\n 'keyboard',\n 'mousewheel',\n 'navigation',\n 'pagination',\n 'parallax',\n 'scrollbar',\n 'thumbs',\n 'virtual',\n 'zoom',\n];\n\nfunction getParams(element) {\n const params = {};\n const passedParams = {};\n extend(params, defaults);\n\n const localParamsList = [...paramsList, 'on'];\n\n const allowedParams = localParamsList.map((key) => key.replace(/_/, ''));\n\n // First check props\n localParamsList.forEach((paramName) => {\n paramName = paramName.replace('_', '');\n if (typeof element[paramName] !== 'undefined') {\n passedParams[paramName] = element[paramName];\n }\n });\n\n // Attributes\n [...element.attributes].forEach((attr) => {\n const moduleParam = modulesParamsList.filter(\n (mParam) => attr.name.indexOf(`${mParam}-`) === 0,\n )[0];\n if (moduleParam) {\n const parentObjName = attrToProp(moduleParam);\n const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);\n if (!passedParams[parentObjName]) passedParams[parentObjName] = {};\n if (passedParams[parentObjName] === true) {\n passedParams[parentObjName] = { enabled: true };\n }\n passedParams[parentObjName][subObjName] = formatValue(attr.value);\n } else {\n const name = attrToProp(attr.name);\n if (!allowedParams.includes(name)) return;\n const value = formatValue(attr.value);\n if (passedParams[name] && modulesParamsList.includes(attr.name)) {\n if (passedParams[name].constructor !== Object) {\n passedParams[name] = {};\n }\n passedParams[name].enabled = value;\n } else {\n passedParams[name] = value;\n }\n }\n });\n\n extend(params, passedParams);\n\n if (params.navigation) {\n params.navigation = {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n ...(params.navigation !== true ? params.navigation : {}),\n };\n } else if (params.navigation === false) {\n delete params.navigation;\n }\n\n if (params.scrollbar) {\n params.scrollbar = {\n el: '.swiper-scrollbar',\n ...(params.scrollbar !== true ? params.scrollbar : {}),\n };\n } else if (params.scrollbar === false) {\n delete params.scrollbar;\n }\n\n if (params.pagination) {\n params.pagination = {\n el: '.swiper-pagination',\n ...(params.pagination !== true ? params.pagination : {}),\n };\n } else if (params.pagination === false) {\n delete params.pagination;\n }\n\n return { params, passedParams };\n}\n\nexport { getParams };\n","/**\n * Swiper Custom Element 9.1.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 28, 2023\n */\n\n/* eslint-disable spaced-comment */\nimport Swiper from 'swiper/bundle';\nimport { paramsList } from '../components-shared/params-list.js';\nimport { getParams } from './get-params.js';\nimport {\n needsScrollbar,\n needsNavigation,\n needsPagination,\n attrToProp,\n} from '../components-shared/utils.js';\nimport { updateSwiper } from '../components-shared/update-swiper.js';\n\nconst SwiperFontCSS = `@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}`; const SwiperCSS = `:root{--swiper-theme-color:#007aff}.swiper,swiper-container{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}:host(.swiper-vertical)>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight swiper-slide{height:auto}:host(.swiper-autoheight) .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}:host(.swiper-3d.swiper-css-mode) .swiper-wrapper{perspective:1200px}:host(.swiper-3d) .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top,.swiper-3d swiper-slide{transform-style:preserve-3d}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}:host(.swiper-css-mode)>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}:host(.swiper-css-mode)>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>swiper-slide{scroll-snap-align:start start}:host(.swiper-horizontal.swiper-css-mode)>.swiper-wrapper{scroll-snap-type:x mandatory}:host(.swiper-vertical.swiper-css-mode)>.swiper-wrapper{scroll-snap-type:y mandatory}:host(.swiper-centered)>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-centered>swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-centered.swiper-horizontal>swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}:host(.swiper-centered.swiper-horizontal)>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-centered.swiper-vertical>swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}:host(.swiper-centered.swiper-vertical)>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader,swiper-container:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}:host(.swiper-virtual.swiper-css-mode) .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}:host(.swiper-virtual.swiper-css-mode.swiper-horizontal) .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}:host(.swiper-virtual.swiper-css-mode.swiper-vertical) .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev,:host(.swiper-rtl) .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-prev:after,:host(.swiper-rtl) .swiper-button-next:after{content:'prev'}.swiper-button-next,:host(.swiper-rtl) .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,:host(.swiper-rtl) .swiper-button-prev:after{content:'next'}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:50%;background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,:host(.swiper-horizontal.swiper-rtl) .swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}:host(.swiper-rtl) .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;-ms-touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification,swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}:host(.swiper-free-mode)>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}:host(.swiper-grid)>.swiper-wrapper{flex-wrap:wrap}:host(.swiper-grid-column)>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode swiper-slide{transition-timing-function:ease-out}.swiper-fade swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade swiper-slide swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active,.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube swiper-slide swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev,.swiper-cube swiper-slide-next+swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-flip{overflow:visible}.swiper-flip swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip swiper-slide swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`;\n\nlet globalInjectStyles = true;\n\nconst addGlobalStyles = (preInit, swiper) => {\n let globalStyles = document.querySelector('style#swiper-element-styles');\n const shouldOverwrite = globalStyles && globalStyles.preInit && !preInit;\n if (!preInit && swiper) {\n swiper.cssLinks().forEach((url) => {\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n document.head.prepend(linkEl);\n });\n }\n if (!globalStyles || shouldOverwrite) {\n globalStyles = globalStyles || document.createElement('style');\n globalStyles.textContent = [SwiperFontCSS, swiper ? swiper.cssStyles() : ''].join('\\n'); // eslint-disable-line\n globalStyles.id = 'swiper-element-styles';\n globalStyles.preInit = preInit;\n document.head.prepend(globalStyles);\n }\n};\n\nclass DummyHTMLElement {}\n\nconst ClassToExtend =\n typeof window === 'undefined' || typeof HTMLElement === 'undefined'\n ? DummyHTMLElement\n : HTMLElement;\n\nclass SwiperContainer extends ClassToExtend {\n constructor() {\n super();\n\n this.tempDiv = document.createElement('div');\n this.shadowEl = this.attachShadow({ mode: 'open' });\n }\n\n cssStyles() {\n return [\n globalInjectStyles ? SwiperCSS : '', // eslint-disable-line\n ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : []),\n ].join('\\n');\n }\n\n cssLinks() {\n return this.injectStylesUrls || [];\n }\n\n render() {\n if (globalInjectStyles) {\n // global styles\n addGlobalStyles(false, this);\n }\n\n // local styles\n const localStyles = this.cssStyles();\n if (localStyles.length) {\n this.stylesEl = document.createElement('style');\n this.stylesEl.textContent = localStyles;\n this.shadowEl.appendChild(this.stylesEl);\n }\n\n this.cssLinks().forEach((url) => {\n const linkExists = document.querySelector(`link[href=\"${url}\"]`);\n if (linkExists) return;\n const linkEl = document.createElement('link');\n linkEl.rel = 'stylesheet';\n linkEl.href = url;\n this.shadowEl.appendChild(linkEl);\n });\n // prettier-ignore\n this.tempDiv.innerHTML = `\n <slot name=\"container-start\"></slot>\n <div class=\"swiper-wrapper\">\n <slot></slot>\n </div>\n <slot name=\"container-end\"></slot>\n ${needsNavigation(this.passedParams) ? `\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n ` : ''}\n ${needsPagination(this.passedParams) ? `\n <div class=\"swiper-pagination\"></div>\n ` : '' }\n ${needsScrollbar(this.passedParams) ? `\n <div class=\"swiper-scrollbar\"></div>\n ` : '' }\n `;\n [...this.tempDiv.children].forEach((el) => {\n this.shadowEl.appendChild(el);\n });\n }\n\n initialize() {\n if (this.initialized) return;\n this.initialized = true;\n const { params: swiperParams, passedParams } = getParams(this);\n this.swiperParams = swiperParams;\n this.passedParams = passedParams;\n delete this.swiperParams.init;\n\n this.render();\n // eslint-disable-next-line\n this.swiper = new Swiper(this, {\n ...swiperParams,\n touchEventsTarget: 'container',\n ...(swiperParams.virtual ? {} : { observer: true }),\n onAny: (name, ...args) => {\n const event = new CustomEvent(name.toLowerCase(), {\n detail: args,\n bubbles: true,\n cancelable: true,\n });\n this.dispatchEvent(event);\n },\n });\n }\n\n connectedCallback() {\n if (this.init === false || this.getAttribute('init') === 'false') {\n addGlobalStyles(true, this);\n return;\n }\n this.initialize();\n }\n\n disconnectedCallback() {\n if (this.swiper && this.swiper.destroy) {\n this.swiper.destroy();\n }\n }\n\n updateSwiperOnPropChange(propName) {\n const { params: swiperParams, passedParams } = getParams(this);\n this.passedParams = passedParams;\n this.swiperParams = swiperParams;\n\n updateSwiper({\n swiper: this.swiper,\n passedParams: this.passedParams,\n changedParams: [attrToProp(propName)],\n ...(propName === 'navigation' && passedParams[propName]\n ? {\n prevEl: '.swiper-button-prev',\n nextEl: '.swiper-button-next',\n }\n : {}),\n ...(propName === 'pagination' && passedParams[propName]\n ? {\n paginationEl: '.swiper-pagination',\n }\n : {}),\n ...(propName === 'scrollbar' && passedParams[propName]\n ? {\n scrollbarEl: '.swiper-scrollbar',\n }\n : {}),\n });\n }\n\n attributeChangedCallback(attr, prevValue, newValue) {\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(attr, newValue);\n }\n\n static get observedAttributes() {\n const attrs = paramsList\n .filter((param) => param.includes('_'))\n .map((param) =>\n param\n .replace(/[A-Z]/g, (v) => `-${v}`)\n .replace('_', '')\n .toLowerCase(),\n );\n return attrs;\n }\n}\n\nparamsList.forEach((paramName) => {\n if (paramName === 'init') return;\n paramName = paramName.replace('_', '');\n Object.defineProperty(SwiperContainer.prototype, paramName, {\n get() {\n return (this.passedParams || {})[paramName];\n },\n set(value) {\n if (!this.passedParams) this.passedParams = {};\n this.passedParams[paramName] = value;\n if (!this.initialized) return;\n this.updateSwiperOnPropChange(paramName, value);\n },\n });\n});\n\nclass SwiperSlide extends ClassToExtend {\n constructor() {\n super();\n\n this.tempDiv = document.createElement('div');\n this.shadowEl = this.attachShadow({ mode: 'open' });\n }\n\n render() {\n const lazy =\n this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true';\n\n this.tempDiv.innerHTML = `<slot />`;\n\n [...this.tempDiv.children].forEach((el) => {\n this.shadowEl.appendChild(el);\n });\n\n if (lazy) {\n const lazyDiv = document.createElement('div');\n lazyDiv.classList.add('swiper-lazy-preloader');\n this.appendChild(lazyDiv);\n }\n }\n\n initialize() {\n this.render();\n }\n\n connectedCallback() {\n this.initialize();\n }\n}\n\n// eslint-disable-next-line\nconst register = (injectStyles = true) => {\n if (typeof window === 'undefined') return;\n if (!injectStyles) {\n globalInjectStyles = false;\n }\n if (globalInjectStyles) {\n addGlobalStyles(true);\n }\n if (!window.customElements.get('swiper-container'))\n window.customElements.define('swiper-container', SwiperContainer);\n if (!window.customElements.get('swiper-slide'))\n window.customElements.define('swiper-slide', SwiperSlide);\n};\n\nif (typeof window !== 'undefined') {\n window.SwiperElementRegisterParams = (params) => {\n paramsList.push(...params);\n };\n}\n\n//BROWSER_REGISTER\n\nexport { SwiperContainer, SwiperSlide, register };\n","import classesToSelector from '../../shared/classes-to-selector.js';\nimport { createElement, elementIndex } from '../../shared/utils.js';\nexport default function A11y({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n const makeElementsArray = el => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getRandomNumber(size = 16) {\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(`.${swiper.params.pagination.bulletActiveClass}`)) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = () => {\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n if (swiper.isElement) {\n liveRegion.setAttribute('slot', 'container-end');\n }\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nexport default function Autoplay({\n swiper,\n extendParams,\n on,\n emit,\n params\n}) {\n swiper.autoplay = {\n running: false,\n paused: false,\n timeLeft: 0\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n let timeout;\n let raf;\n let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n let autoplayTimeLeft;\n let autoplayStartTime = new Date().getTime;\n let wasPaused;\n let isTouched;\n let pausedByTouch;\n let touchStartTimeout;\n let slideChanged;\n let pausedByInteraction;\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n if (e.target !== swiper.wrapperEl) return;\n swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n resume();\n }\n const calcTimeLeft = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.autoplay.paused) {\n wasPaused = true;\n } else if (wasPaused) {\n autoplayDelayCurrent = autoplayTimeLeft;\n wasPaused = false;\n }\n const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n swiper.autoplay.timeLeft = timeLeft;\n emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n raf = requestAnimationFrame(() => {\n calcTimeLeft();\n });\n };\n const getSlideDelay = () => {\n let activeSlideEl;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n } else {\n activeSlideEl = swiper.slides[swiper.activeIndex];\n }\n if (!activeSlideEl) return undefined;\n const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n return currentSlideDelay;\n };\n const run = delayForce => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n cancelAnimationFrame(raf);\n calcTimeLeft();\n let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n autoplayDelayTotal = swiper.params.autoplay.delay;\n autoplayDelayCurrent = swiper.params.autoplay.delay;\n const currentSlideDelay = getSlideDelay();\n if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n delay = currentSlideDelay;\n autoplayDelayTotal = currentSlideDelay;\n autoplayDelayCurrent = currentSlideDelay;\n }\n autoplayTimeLeft = delay;\n const speed = swiper.params.speed;\n const proceed = () => {\n if (!swiper || swiper.destroyed) return;\n if (swiper.params.autoplay.reverseDirection) {\n if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n swiper.slidePrev(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n emit('autoplay');\n }\n } else {\n if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n swiper.slideNext(speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n swiper.slideTo(0, speed, true, true);\n emit('autoplay');\n }\n }\n if (swiper.params.cssMode) {\n autoplayStartTime = new Date().getTime();\n requestAnimationFrame(() => {\n run();\n });\n }\n };\n if (delay > 0) {\n clearTimeout(timeout);\n timeout = setTimeout(() => {\n proceed();\n }, delay);\n } else {\n requestAnimationFrame(() => {\n proceed();\n });\n }\n\n // eslint-disable-next-line\n return delay;\n };\n const start = () => {\n swiper.autoplay.running = true;\n run();\n emit('autoplayStart');\n };\n const stop = () => {\n swiper.autoplay.running = false;\n clearTimeout(timeout);\n cancelAnimationFrame(raf);\n emit('autoplayStop');\n };\n const pause = (internal, reset) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n clearTimeout(timeout);\n if (!internal) {\n pausedByInteraction = true;\n }\n const proceed = () => {\n emit('autoplayPause');\n if (swiper.params.autoplay.waitForTransition) {\n swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n } else {\n resume();\n }\n };\n swiper.autoplay.paused = true;\n if (reset) {\n if (slideChanged) {\n autoplayTimeLeft = swiper.params.autoplay.delay;\n }\n slideChanged = false;\n proceed();\n return;\n }\n const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n proceed();\n };\n const resume = () => {\n if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n autoplayStartTime = new Date().getTime();\n if (pausedByInteraction) {\n pausedByInteraction = false;\n run(autoplayTimeLeft);\n } else {\n run();\n }\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n };\n const onVisibilityChange = () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n const document = getDocument();\n if (document.visibilityState === 'hidden') {\n pausedByInteraction = true;\n pause(true);\n }\n if (document.visibilityState === 'visible') {\n resume();\n }\n };\n const onPointerEnter = e => {\n if (e.pointerType !== 'mouse') return;\n pausedByInteraction = true;\n pause(true);\n };\n const onPointerLeave = e => {\n if (e.pointerType !== 'mouse') return;\n if (swiper.autoplay.paused) {\n resume();\n }\n };\n const attachMouseEvents = () => {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.el.addEventListener('pointerenter', onPointerEnter);\n swiper.el.addEventListener('pointerleave', onPointerLeave);\n }\n };\n const detachMouseEvents = () => {\n swiper.el.removeEventListener('pointerenter', onPointerEnter);\n swiper.el.removeEventListener('pointerleave', onPointerLeave);\n };\n const attachDocumentEvents = () => {\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n };\n const detachDocumentEvents = () => {\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n };\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n attachMouseEvents();\n attachDocumentEvents();\n autoplayStartTime = new Date().getTime();\n start();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n detachDocumentEvents();\n if (swiper.autoplay.running) {\n stop();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n pause(true, true);\n } else {\n stop();\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n return;\n }\n isTouched = true;\n pausedByTouch = false;\n pausedByInteraction = false;\n touchStartTimeout = setTimeout(() => {\n pausedByInteraction = true;\n pausedByTouch = true;\n pause(true);\n }, 200);\n });\n on('touchEnd', () => {\n if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n clearTimeout(touchStartTimeout);\n clearTimeout(timeout);\n if (swiper.params.autoplay.disableOnInteraction) {\n pausedByTouch = false;\n isTouched = false;\n return;\n }\n if (pausedByTouch && swiper.params.cssMode) resume();\n pausedByTouch = false;\n isTouched = false;\n });\n on('slideChange', () => {\n if (swiper.destroyed || !swiper.autoplay.running) return;\n slideChanged = true;\n });\n Object.assign(swiper.autoplay, {\n start,\n stop,\n pause,\n resume\n });\n}","/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { elementTransitionEnd, nextTick } from '../../shared/utils.js';\nexport default function Controller({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n controller: {\n control: undefined,\n inverse: false,\n by: 'slide' // or 'container'\n }\n });\n\n swiper.controller = {\n control: undefined\n };\n function LinearSpline(x, y) {\n const binarySearch = function search() {\n let maxIndex;\n let minIndex;\n let guess;\n return (array, val) => {\n minIndex = -1;\n maxIndex = array.length;\n while (maxIndex - minIndex > 1) {\n guess = maxIndex + minIndex >> 1;\n if (array[guess] <= val) {\n minIndex = guess;\n } else {\n maxIndex = guess;\n }\n }\n return maxIndex;\n };\n }();\n this.x = x;\n this.y = y;\n this.lastIndex = x.length - 1;\n // Given an x value (x2), return the expected y2 value:\n // (x1,y1) is the known point before given value,\n // (x3,y3) is the known point after given value.\n let i1;\n let i3;\n this.interpolate = function interpolate(x2) {\n if (!x2) return 0;\n\n // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n i3 = binarySearch(this.x, x2);\n i1 = i3 - 1;\n\n // We have our indexes i1 & i3, so we can calculate already:\n // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n };\n return this;\n }\n // xxx: for now i will just save one spline function to to\n function getInterpolateFunction(c) {\n if (!swiper.controller.spline) {\n swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n }\n }\n function setTranslate(_t, byController) {\n const controlled = swiper.controller.control;\n let multiplier;\n let controlledTranslate;\n const Swiper = swiper.constructor;\n function setControlledTranslate(c) {\n // this will create an Interpolate function based on the snapGrids\n // x is the Grid of the scrolled scroller and y will be the controlled scroller\n // it makes sense to create this only once and recall it for the interpolation\n // the function does a lot of value caching for performance\n const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n if (swiper.params.controller.by === 'slide') {\n getInterpolateFunction(c);\n // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n // but it did not work out\n controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n }\n if (!controlledTranslate || swiper.params.controller.by === 'container') {\n multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n }\n if (swiper.params.controller.inverse) {\n controlledTranslate = c.maxTranslate() - controlledTranslate;\n }\n c.updateProgress(controlledTranslate);\n c.setTranslate(controlledTranslate, swiper);\n c.updateActiveIndex();\n c.updateSlidesClasses();\n }\n if (Array.isArray(controlled)) {\n for (let i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTranslate(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTranslate(controlled);\n }\n }\n function setTransition(duration, byController) {\n const Swiper = swiper.constructor;\n const controlled = swiper.controller.control;\n let i;\n function setControlledTransition(c) {\n c.setTransition(duration, swiper);\n if (duration !== 0) {\n c.transitionStart();\n if (c.params.autoHeight) {\n nextTick(() => {\n c.updateAutoHeight();\n });\n }\n elementTransitionEnd(c.wrapperEl, () => {\n if (!controlled) return;\n c.transitionEnd();\n });\n }\n }\n if (Array.isArray(controlled)) {\n for (i = 0; i < controlled.length; i += 1) {\n if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n setControlledTransition(controlled[i]);\n }\n }\n } else if (controlled instanceof Swiper && byController !== controlled) {\n setControlledTransition(controlled);\n }\n }\n function removeSpline() {\n if (!swiper.controller.control) return;\n if (swiper.controller.spline) {\n swiper.controller.spline = undefined;\n delete swiper.controller.spline;\n }\n }\n on('beforeInit', () => {\n if (typeof window !== 'undefined' && (\n // eslint-disable-line\n typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n const controlElement = document.querySelector(swiper.params.controller.control);\n if (controlElement && controlElement.swiper) {\n swiper.controller.control = controlElement.swiper;\n } else if (controlElement) {\n const onControllerSwiper = e => {\n swiper.controller.control = e.detail[0];\n swiper.update();\n controlElement.removeEventListener('init', onControllerSwiper);\n };\n controlElement.addEventListener('init', onControllerSwiper);\n }\n return;\n }\n swiper.controller.control = swiper.params.controller.control;\n });\n on('update', () => {\n removeSpline();\n });\n on('resize', () => {\n removeSpline();\n });\n on('observerUpdate', () => {\n removeSpline();\n });\n on('setTranslate', (_s, translate, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTranslate(translate, byController);\n });\n on('setTransition', (_s, duration, byController) => {\n if (!swiper.controller.control) return;\n swiper.controller.setTransition(duration, byController);\n });\n Object.assign(swiper.controller, {\n setTranslate,\n setTransition\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCards({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cardsEffect: {\n slideShadows: true,\n rotate: true,\n perSlideRotate: 2,\n perSlideOffset: 8\n }\n });\n const setTranslate = () => {\n const {\n slides,\n activeIndex\n } = swiper;\n const params = swiper.params.cardsEffect;\n const {\n startTranslate,\n isTouched\n } = swiper.touchEventsData;\n const currentTranslate = swiper.translate;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideProgress, -4), 4);\n let offset = slideEl.swiperSlideOffset;\n if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n }\n if (swiper.params.centeredSlides && swiper.params.cssMode) {\n offset -= slides[0].swiperSlideOffset;\n }\n let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let tY = 0;\n const tZ = -100 * Math.abs(progress);\n let scale = 1;\n let rotate = -params.perSlideRotate * progress;\n let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n if (isSwipeToNext || isSwipeToPrev) {\n const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n rotate += -28 * progress * subProgress;\n scale += -0.5 * subProgress;\n tXAdd += 96 * subProgress;\n tY = `${-25 * subProgress * Math.abs(progress)}%`;\n }\n if (progress < 0) {\n // next\n tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n } else if (progress > 0) {\n // prev\n tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n } else {\n tX = `${tX}px`;\n }\n if (!swiper.isHorizontal()) {\n const prevY = tY;\n tY = tX;\n tX = prevY;\n }\n const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n const transform = `\n translate3d(${tX}, ${tY}, ${tZ}px)\n rotateZ(${params.rotate ? rotate : 0}deg)\n scale(${scaleString})\n `;\n if (params.slideShadows) {\n // Set shadows\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl) {\n shadowEl = createShadow(params, slideEl);\n }\n if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n }\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'cards',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCoverflow({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n scale: 1,\n modifier: 1,\n slideShadows: true\n }\n });\n const setTranslate = () => {\n const {\n width: swiperWidth,\n height: swiperHeight,\n slides,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform = swiper.translate;\n const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const slideEl = slides[i];\n const slideSize = slidesSizesGrid[i];\n const slideOffset = slideEl.swiperSlideOffset;\n const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n let stretch = params.stretch;\n // Allow percentage to make a relative stretch for responsive sliders\n if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n stretch = parseFloat(params.stretch) / 100 * slideSize;\n }\n let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n if (Math.abs(scale) < 0.001) scale = 0;\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = slideTransform;\n slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBeforeEl) {\n shadowBeforeEl = createShadow(params, slideEl, isHorizontal ? 'left' : 'top');\n }\n if (!shadowAfterEl) {\n shadowAfterEl = createShadow(params, slideEl, isHorizontal ? 'right' : 'bottom');\n }\n if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n };\n effectInit({\n effect: 'coverflow',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => true,\n overwriteParams: () => ({\n watchSlidesProgress: true\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectCreative({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n creativeEffect: {\n limitProgress: 1,\n shadowPerProgress: false,\n progressMultiplier: 1,\n perspective: true,\n prev: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n },\n next: {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n opacity: 1,\n scale: 1\n }\n }\n });\n const getTranslateValue = value => {\n if (typeof value === 'string') return value;\n return `${value}px`;\n };\n const setTranslate = () => {\n const {\n slides,\n wrapperEl,\n slidesSizesGrid\n } = swiper;\n const params = swiper.params.creativeEffect;\n const {\n progressMultiplier: multiplier\n } = params;\n const isCenteredSlides = swiper.params.centeredSlides;\n if (isCenteredSlides) {\n const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n const slideProgress = slideEl.progress;\n const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n let originalProgress = progress;\n if (!isCenteredSlides) {\n originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n }\n const offset = slideEl.swiperSlideOffset;\n const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n const r = [0, 0, 0];\n let custom = false;\n if (!swiper.isHorizontal()) {\n t[1] = t[0];\n t[0] = 0;\n }\n let data = {\n translate: [0, 0, 0],\n rotate: [0, 0, 0],\n scale: 1,\n opacity: 1\n };\n if (progress < 0) {\n data = params.next;\n custom = true;\n } else if (progress > 0) {\n data = params.prev;\n custom = true;\n }\n // set translate\n t.forEach((value, index) => {\n t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n });\n // set rotates\n r.forEach((value, index) => {\n r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n });\n slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n const translateString = t.join(', ');\n const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n // Set shadows\n if (custom && data.shadow || !custom) {\n let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n if (!shadowEl && data.shadow) {\n shadowEl = createShadow(params, slideEl);\n }\n if (shadowEl) {\n const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n }\n }\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n targetEl.style.opacity = opacityString;\n if (data.origin) {\n targetEl.style.transformOrigin = data.origin;\n }\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'creative',\n swiper,\n on,\n setTranslate,\n setTransition,\n perspective: () => swiper.params.creativeEffect.perspective,\n overwriteParams: () => ({\n watchSlidesProgress: true,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import effectInit from '../../shared/effect-init.js';\nimport { createElement } from '../../shared/utils.js';\nexport default function EffectCube({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n cubeEffect: {\n slideShadows: true,\n shadow: true,\n shadowOffset: 20,\n shadowScale: 0.94\n }\n });\n const createSlideShadows = (slideEl, progress, isHorizontal) => {\n let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createElement('div', `swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`);\n slideEl.append(shadowBefore);\n }\n if (!shadowAfter) {\n shadowAfter = createElement('div', `swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`);\n slideEl.append(shadowAfter);\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // create new ones\n const isHorizontal = swiper.isHorizontal();\n swiper.slides.forEach(slideEl => {\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n createSlideShadows(slideEl, progress, isHorizontal);\n });\n };\n const setTranslate = () => {\n const {\n el,\n wrapperEl,\n slides,\n width: swiperWidth,\n height: swiperHeight,\n rtlTranslate: rtl,\n size: swiperSize,\n browser\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl = swiper.slidesEl.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n swiper.slidesEl.append(cubeShadowEl);\n }\n cubeShadowEl.style.height = `${swiperWidth}px`;\n } else {\n cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n if (!cubeShadowEl) {\n cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n el.append(cubeShadowEl);\n }\n }\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + round * 4 * swiperSize;\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = 3 * swiperSize + swiperSize * 4 * round;\n }\n if (rtl) {\n tx = -tx;\n }\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = slideIndex * 90 + progress * 90;\n if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n }\n slideEl.style.transform = transform;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, isHorizontal);\n }\n }\n wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n if (params.shadow) {\n if (isHorizontal) {\n cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset = params.shadowOffset;\n cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n }\n }\n const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n };\n const setTransition = duration => {\n const {\n el,\n slides\n } = swiper;\n slides.forEach(slideEl => {\n slideEl.style.transitionDuration = `${duration}ms`;\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n subEl.style.transitionDuration = `${duration}ms`;\n });\n });\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n const shadowEl = el.querySelector('.swiper-cube-shadow');\n if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n }\n };\n effectInit({\n effect: 'cube',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.cubeEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true\n })\n });\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectFade({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n fadeEffect: {\n crossFade: false\n }\n });\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = swiper.slides[i];\n const offset = slideEl.swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.opacity = slideOpacity;\n targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides: true\n });\n };\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nimport { getSlideTransformEl } from '../../shared/utils.js';\nexport default function EffectFlip({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n flipEffect: {\n slideShadows: true,\n limitRotation: true\n }\n });\n const createSlideShadows = (slideEl, progress, params) => {\n let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n if (!shadowBefore) {\n shadowBefore = createShadow(params, slideEl, swiper.isHorizontal() ? 'left' : 'top');\n }\n if (!shadowAfter) {\n shadowAfter = createShadow(params, slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n }\n if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n };\n const recreateShadows = () => {\n // Set shadows\n const params = swiper.params.flipEffect;\n swiper.slides.forEach(slideEl => {\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n createSlideShadows(slideEl, progress, params);\n });\n };\n const setTranslate = () => {\n const {\n slides,\n rtlTranslate: rtl\n } = swiper;\n const params = swiper.params.flipEffect;\n for (let i = 0; i < slides.length; i += 1) {\n const slideEl = slides[i];\n let progress = slideEl.progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min(slideEl.progress, 1), -1);\n }\n const offset = slideEl.swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n if (params.slideShadows) {\n createSlideShadows(slideEl, progress, params);\n }\n const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n const targetEl = effectTarget(params, slideEl);\n targetEl.style.transform = transform;\n }\n };\n const setTransition = duration => {\n const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n transformElements.forEach(el => {\n el.style.transitionDuration = `${duration}ms`;\n el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n shadowEl.style.transitionDuration = `${duration}ms`;\n });\n });\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements\n });\n };\n effectInit({\n effect: 'flip',\n swiper,\n on,\n setTranslate,\n setTransition,\n recreateShadows,\n getEffectParams: () => swiper.params.flipEffect,\n perspective: () => true,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","import { elementTransitionEnd, now } from '../../shared/utils.js';\nexport default function freeMode({\n swiper,\n extendParams,\n emit,\n once\n}) {\n extendParams({\n freeMode: {\n enabled: false,\n momentum: true,\n momentumRatio: 1,\n momentumBounce: true,\n momentumBounceRatio: 1,\n momentumVelocityRatio: 1,\n sticky: false,\n minimumVelocity: 0.02\n }\n });\n function onTouchStart() {\n const translate = swiper.getTranslate();\n swiper.setTranslate(translate);\n swiper.setTransition(0);\n swiper.touchEventsData.velocities.length = 0;\n swiper.freeMode.onTouchEnd({\n currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n });\n }\n function onTouchMove() {\n const {\n touchEventsData: data,\n touches\n } = swiper;\n // Velocity\n if (data.velocities.length === 0) {\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n time: data.touchStartTime\n });\n }\n data.velocities.push({\n position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n time: now()\n });\n }\n function onTouchEnd({\n currentPos\n }) {\n const {\n params,\n wrapperEl,\n rtlTranslate: rtl,\n snapGrid,\n touchEventsData: data\n } = swiper;\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n if (currentPos < -swiper.minTranslate()) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (currentPos > -swiper.maxTranslate()) {\n if (swiper.slides.length < snapGrid.length) {\n swiper.slideTo(snapGrid.length - 1);\n } else {\n swiper.slideTo(swiper.slides.length - 1);\n }\n return;\n }\n if (params.freeMode.momentum) {\n if (data.velocities.length > 1) {\n const lastMoveEvent = data.velocities.pop();\n const velocityEvent = data.velocities.pop();\n const distance = lastMoveEvent.position - velocityEvent.position;\n const time = lastMoveEvent.time - velocityEvent.time;\n swiper.velocity = distance / time;\n swiper.velocity /= 2;\n if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n swiper.velocity = 0;\n }\n // this implies that the user stopped moving a finger then released.\n // There would be no events with distance zero, so the last event is stale.\n if (time > 150 || now() - lastMoveEvent.time > 300) {\n swiper.velocity = 0;\n }\n } else {\n swiper.velocity = 0;\n }\n swiper.velocity *= params.freeMode.momentumVelocityRatio;\n data.velocities.length = 0;\n let momentumDuration = 1000 * params.freeMode.momentumRatio;\n const momentumDistance = swiper.velocity * momentumDuration;\n let newPosition = swiper.translate + momentumDistance;\n if (rtl) newPosition = -newPosition;\n let doBounce = false;\n let afterBouncePosition;\n const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n let needsLoopFix;\n if (newPosition < swiper.maxTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n newPosition = swiper.maxTranslate() - bounceAmount;\n }\n afterBouncePosition = swiper.maxTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.maxTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (newPosition > swiper.minTranslate()) {\n if (params.freeMode.momentumBounce) {\n if (newPosition - swiper.minTranslate() > bounceAmount) {\n newPosition = swiper.minTranslate() + bounceAmount;\n }\n afterBouncePosition = swiper.minTranslate();\n doBounce = true;\n data.allowMomentumBounce = true;\n } else {\n newPosition = swiper.minTranslate();\n }\n if (params.loop && params.centeredSlides) needsLoopFix = true;\n } else if (params.freeMode.sticky) {\n let nextSlide;\n for (let j = 0; j < snapGrid.length; j += 1) {\n if (snapGrid[j] > -newPosition) {\n nextSlide = j;\n break;\n }\n }\n if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n newPosition = snapGrid[nextSlide];\n } else {\n newPosition = snapGrid[nextSlide - 1];\n }\n newPosition = -newPosition;\n }\n if (needsLoopFix) {\n once('transitionEnd', () => {\n swiper.loopFix();\n });\n }\n // Fix duration\n if (swiper.velocity !== 0) {\n if (rtl) {\n momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n } else {\n momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n }\n if (params.freeMode.sticky) {\n // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n // It's easy to see this when simulating touch with mouse events. To fix this,\n // limit single-slide swipes to the default slide duration. This also has the\n // nice side effect of matching slide speed if the user stopped moving before\n // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n // For faster swipes, also apply limits (albeit higher ones).\n const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n if (moveDistance < currentSlideSize) {\n momentumDuration = params.speed;\n } else if (moveDistance < 2 * currentSlideSize) {\n momentumDuration = params.speed * 1.5;\n } else {\n momentumDuration = params.speed * 2.5;\n }\n }\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n }\n if (params.freeMode.momentumBounce && doBounce) {\n swiper.updateProgress(afterBouncePosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n emit('momentumBounce');\n swiper.setTransition(params.speed);\n setTimeout(() => {\n swiper.setTranslate(afterBouncePosition);\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }, 0);\n });\n } else if (swiper.velocity) {\n emit('_freeModeNoMomentumRelease');\n swiper.updateProgress(newPosition);\n swiper.setTransition(momentumDuration);\n swiper.setTranslate(newPosition);\n swiper.transitionStart(true, swiper.swipeDirection);\n if (!swiper.animating) {\n swiper.animating = true;\n elementTransitionEnd(wrapperEl, () => {\n if (!swiper || swiper.destroyed) return;\n swiper.transitionEnd();\n });\n }\n } else {\n swiper.updateProgress(newPosition);\n }\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n } else if (params.freeMode.sticky) {\n swiper.slideToClosest();\n return;\n } else if (params.freeMode) {\n emit('_freeModeNoMomentumRelease');\n }\n if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n }\n Object.assign(swiper, {\n freeMode: {\n onTouchStart,\n onTouchMove,\n onTouchEnd\n }\n });\n}","export default function Grid({\n swiper,\n extendParams\n}) {\n extendParams({\n grid: {\n rows: 1,\n fill: 'column'\n }\n });\n let slidesNumberEvenToRows;\n let slidesPerRow;\n let numFullColumns;\n const initSlides = slidesLength => {\n const {\n slidesPerView\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n slidesPerRow = slidesNumberEvenToRows / rows;\n numFullColumns = Math.floor(slidesLength / rows);\n if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n slidesNumberEvenToRows = slidesLength;\n } else {\n slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n }\n if (slidesPerView !== 'auto' && fill === 'row') {\n slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n }\n };\n const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n const {\n slidesPerGroup,\n spaceBetween\n } = swiper.params;\n const {\n rows,\n fill\n } = swiper.params.grid;\n // Set slides order\n let newSlideOrderIndex;\n let column;\n let row;\n if (fill === 'row' && slidesPerGroup > 1) {\n const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n row = Math.floor(slideIndexInGroup / columnsInGroup);\n column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n slide.style.order = newSlideOrderIndex;\n } else if (fill === 'column') {\n column = Math.floor(i / rows);\n row = i - column * rows;\n if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n row += 1;\n if (row >= rows) {\n row = 0;\n column += 1;\n }\n }\n } else {\n row = Math.floor(i / slidesPerRow);\n column = i - row * slidesPerRow;\n }\n slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n };\n const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n const {\n spaceBetween,\n centeredSlides,\n roundLengths\n } = swiper.params;\n const {\n rows\n } = swiper.params.grid;\n swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n if (centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n }\n snapGrid.splice(0, snapGrid.length);\n snapGrid.push(...newSlidesGrid);\n }\n };\n swiper.grid = {\n initSlides,\n updateSlide,\n updateWrapperSize\n };\n}","import { getWindow, getDocument } from 'ssr-window';\nimport { elementChildren } from '../../shared/utils.js';\nexport default function HashNavigation({\n swiper,\n extendParams,\n emit,\n on\n}) {\n let initialized = false;\n const document = getDocument();\n const window = getWindow();\n extendParams({\n hashNavigation: {\n enabled: false,\n replaceState: false,\n watchState: false\n }\n });\n const onHashChange = () => {\n emit('hashChange');\n const newHash = document.location.hash.replace('#', '');\n const activeSlideHash = swiper.slides[swiper.activeIndex].getAttribute('data-hash');\n if (newHash !== activeSlideHash) {\n const newIndex = swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${newHash}\"], swiper-slide[data-hash=\"${newHash}\"]`)[0]);\n if (typeof newIndex === 'undefined') return;\n swiper.slideTo(newIndex);\n }\n };\n const setHash = () => {\n if (!initialized || !swiper.params.hashNavigation.enabled) return;\n if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n window.history.replaceState(null, null, `#${swiper.slides[swiper.activeIndex].getAttribute('data-hash')}` || '');\n emit('hashSet');\n } else {\n const slide = swiper.slides[swiper.activeIndex];\n const hash = slide.getAttribute('data-hash') || slide.getAttribute('data-history');\n document.location.hash = hash || '';\n emit('hashSet');\n }\n };\n const init = () => {\n if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n initialized = true;\n const hash = document.location.hash.replace('#', '');\n if (hash) {\n const speed = 0;\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHash = slide.getAttribute('data-hash') || slide.getAttribute('data-history');\n if (slideHash === hash) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n }\n }\n }\n if (swiper.params.hashNavigation.watchState) {\n window.addEventListener('hashchange', onHashChange);\n }\n };\n const destroy = () => {\n if (swiper.params.hashNavigation.watchState) {\n window.removeEventListener('hashchange', onHashChange);\n }\n };\n on('init', () => {\n if (swiper.params.hashNavigation.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.hashNavigation.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHash();\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHash();\n }\n });\n}","import { getWindow } from 'ssr-window';\nexport default function History({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n history: {\n enabled: false,\n root: '',\n replaceState: false,\n key: 'slides',\n keepQuery: false\n }\n });\n let initialized = false;\n let paths = {};\n const slugify = text => {\n return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n };\n const getPathValues = urlOverride => {\n const window = getWindow();\n let location;\n if (urlOverride) {\n location = new URL(urlOverride);\n } else {\n location = window.location;\n }\n const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n const total = pathArray.length;\n const key = pathArray[total - 2];\n const value = pathArray[total - 1];\n return {\n key,\n value\n };\n };\n const setHistory = (key, index) => {\n const window = getWindow();\n if (!initialized || !swiper.params.history.enabled) return;\n let location;\n if (swiper.params.url) {\n location = new URL(swiper.params.url);\n } else {\n location = window.location;\n }\n const slide = swiper.slides[index];\n let value = slugify(slide.getAttribute('data-history'));\n if (swiper.params.history.root.length > 0) {\n let root = swiper.params.history.root;\n if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n value = `${root}/${key ? `${key}/` : ''}${value}`;\n } else if (!location.pathname.includes(key)) {\n value = `${key ? `${key}/` : ''}${value}`;\n }\n if (swiper.params.history.keepQuery) {\n value += location.search;\n }\n const currentState = window.history.state;\n if (currentState && currentState.value === value) {\n return;\n }\n if (swiper.params.history.replaceState) {\n window.history.replaceState({\n value\n }, null, value);\n } else {\n window.history.pushState({\n value\n }, null, value);\n }\n };\n const scrollToSlide = (speed, value, runCallbacks) => {\n if (value) {\n for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n const slide = swiper.slides[i];\n const slideHistory = slugify(slide.getAttribute('data-history'));\n if (slideHistory === value) {\n const index = swiper.getSlideIndex(slide);\n swiper.slideTo(index, speed, runCallbacks);\n }\n }\n } else {\n swiper.slideTo(0, speed, runCallbacks);\n }\n };\n const setHistoryPopState = () => {\n paths = getPathValues(swiper.params.url);\n scrollToSlide(swiper.params.speed, paths.value, false);\n };\n const init = () => {\n const window = getWindow();\n if (!swiper.params.history) return;\n if (!window.history || !window.history.pushState) {\n swiper.params.history.enabled = false;\n swiper.params.hashNavigation.enabled = true;\n return;\n }\n initialized = true;\n paths = getPathValues(swiper.params.url);\n if (!paths.key && !paths.value) {\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n return;\n }\n scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n if (!swiper.params.history.replaceState) {\n window.addEventListener('popstate', setHistoryPopState);\n }\n };\n const destroy = () => {\n const window = getWindow();\n if (!swiper.params.history.replaceState) {\n window.removeEventListener('popstate', setHistoryPopState);\n }\n };\n on('init', () => {\n if (swiper.params.history.enabled) {\n init();\n }\n });\n on('destroy', () => {\n if (swiper.params.history.enabled) {\n destroy();\n }\n });\n on('transitionEnd _freeModeNoMomentumRelease', () => {\n if (initialized) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n on('slideChange', () => {\n if (initialized && swiper.params.cssMode) {\n setHistory(swiper.params.history.key, swiper.activeIndex);\n }\n });\n}","/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport { elementOffset, elementParents } from '../../shared/utils.js';\nexport default function Keyboard({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 {\n rtlTranslate: rtl\n } = swiper;\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}","import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n swiper\n}) {\n Object.assign(swiper, {\n appendSlide: appendSlide.bind(swiper),\n prependSlide: prependSlide.bind(swiper),\n addSlide: addSlide.bind(swiper),\n removeSlide: removeSlide.bind(swiper),\n removeAllSlides: removeAllSlides.bind(swiper)\n });\n}","export default function addSlide(index, slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n swiper.recalcSlides();\n }\n const baseLength = swiper.slides.length;\n if (index <= 0) {\n swiper.prependSlide(slides);\n return;\n }\n if (index >= baseLength) {\n swiper.appendSlide(slides);\n return;\n }\n let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n const slidesBuffer = [];\n for (let i = baseLength - 1; i >= index; i -= 1) {\n const currentSlide = swiper.slides[i];\n currentSlide.remove();\n slidesBuffer.unshift(currentSlide);\n }\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) slidesEl.append(slides[i]);\n }\n newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n } else {\n slidesEl.append(slides);\n }\n for (let i = 0; i < slidesBuffer.length; i += 1) {\n slidesEl.append(slidesBuffer[i]);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","export default function appendSlide(slides) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n const appendElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.append(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.append(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) appendElement(slides[i]);\n }\n } else {\n appendElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n}","export default function prependSlide(slides) {\n const swiper = this;\n const {\n params,\n activeIndex,\n slidesEl\n } = swiper;\n if (params.loop) {\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndex + 1;\n const prependElement = slideEl => {\n if (typeof slideEl === 'string') {\n const tempDOM = document.createElement('div');\n tempDOM.innerHTML = slideEl;\n slidesEl.prepend(tempDOM.children[0]);\n tempDOM.innerHTML = '';\n } else {\n slidesEl.prepend(slideEl);\n }\n };\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) prependElement(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n } else {\n prependElement(slides);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n swiper.slideTo(newActiveIndex, 0, false);\n}","export default function removeAllSlides() {\n const swiper = this;\n const slidesIndexes = [];\n for (let i = 0; i < swiper.slides.length; i += 1) {\n slidesIndexes.push(i);\n }\n swiper.removeSlide(slidesIndexes);\n}","export default function removeSlide(slidesIndexes) {\n const swiper = this;\n const {\n params,\n activeIndex\n } = swiper;\n let activeIndexBuffer = activeIndex;\n if (params.loop) {\n activeIndexBuffer -= swiper.loopedSlides;\n swiper.loopDestroy();\n }\n let newActiveIndex = activeIndexBuffer;\n let indexToRemove;\n if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n for (let i = 0; i < slidesIndexes.length; i += 1) {\n indexToRemove = slidesIndexes[i];\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n }\n newActiveIndex = Math.max(newActiveIndex, 0);\n } else {\n indexToRemove = slidesIndexes;\n if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n newActiveIndex = Math.max(newActiveIndex, 0);\n }\n swiper.recalcSlides();\n if (params.loop) {\n swiper.loopCreate();\n }\n if (!params.observer || swiper.isElement) {\n swiper.update();\n }\n if (params.loop) {\n swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n } else {\n swiper.slideTo(newActiveIndex, 0, false);\n }\n}","/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n mousewheel: {\n enabled: false,\n releaseOnEdges: false,\n invert: false,\n forceToAxis: false,\n sensitivity: 1,\n eventsTarget: 'container',\n thresholdDelta: null,\n thresholdTime: null\n }\n });\n swiper.mousewheel = {\n enabled: false\n };\n let timeout;\n let lastScrollTime = now();\n let lastEventBeforeSnap;\n const recentWheelEvents = [];\n function normalize(e) {\n // Reasonable defaults\n const PIXEL_STEP = 10;\n const LINE_HEIGHT = 40;\n const PAGE_HEIGHT = 800;\n let sX = 0;\n let sY = 0; // spinX, spinY\n let pX = 0;\n let pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in e) {\n sY = e.detail;\n }\n if ('wheelDelta' in e) {\n sY = -e.wheelDelta / 120;\n }\n if ('wheelDeltaY' in e) {\n sY = -e.wheelDeltaY / 120;\n }\n if ('wheelDeltaX' in e) {\n sX = -e.wheelDeltaX / 120;\n }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n if ('deltaY' in e) {\n pY = e.deltaY;\n }\n if ('deltaX' in e) {\n pX = e.deltaX;\n }\n if (e.shiftKey && !pX) {\n // if user scrolls with shift he wants horizontal scroll\n pX = pY;\n pY = 0;\n }\n if ((pX || pY) && e.deltaMode) {\n if (e.deltaMode === 1) {\n // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else {\n // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) {\n sX = pX < 1 ? -1 : 1;\n }\n if (pY && !sY) {\n sY = pY < 1 ? -1 : 1;\n }\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n }\n function handleMouseEnter() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = true;\n }\n function handleMouseLeave() {\n if (!swiper.enabled) return;\n swiper.mouseEntered = false;\n }\n function animateSlider(newEvent) {\n if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n // Prevent if delta of wheel scroll delta is below configured threshold\n return false;\n }\n if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n // Prevent if time between scrolls is below configured threshold\n return false;\n }\n\n // If the movement is NOT big enough and\n // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n // Don't go any further (avoid insignificant scroll movement).\n if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n // Return false as a default\n return true;\n }\n // If user is scrolling towards the end:\n // If the slider hasn't hit the latest slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to next slide and\n // emit a scroll event.\n // Else (the user is scrolling towards the beginning) and\n // if the slider hasn't hit the first slide or\n // if the slider is a loop and\n // if the slider isn't moving right now:\n // Go to prev slide and\n // emit a scroll event.\n if (newEvent.direction < 0) {\n if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n swiper.slideNext();\n emit('scroll', newEvent.raw);\n }\n } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n swiper.slidePrev();\n emit('scroll', newEvent.raw);\n }\n // If you got here is because an animation has been triggered so store the current time\n lastScrollTime = new window.Date().getTime();\n // Return false as a default\n return false;\n }\n function releaseScroll(newEvent) {\n const params = swiper.params.mousewheel;\n if (newEvent.direction < 0) {\n if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n // Return true to animate scroll on edges\n return true;\n }\n return false;\n }\n function handle(event) {\n let e = event;\n let disableParentSwiper = true;\n if (!swiper.enabled) return;\n const params = swiper.params.mousewheel;\n if (swiper.params.cssMode) {\n e.preventDefault();\n }\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n if (e.originalEvent) e = e.originalEvent; // jquery fix\n let delta = 0;\n const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n const data = normalize(e);\n if (params.forceToAxis) {\n if (swiper.isHorizontal()) {\n if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n } else {\n delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n }\n if (delta === 0) return true;\n if (params.invert) delta = -delta;\n\n // Get the scroll positions\n let positions = swiper.getTranslate() + delta * params.sensitivity;\n if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n // When loop is true:\n // the disableParentSwiper will be true.\n // When loop is false:\n // if the scroll positions is not on edge,\n // then the disableParentSwiper will be true.\n // if the scroll on edge positions,\n // then the disableParentSwiper will be false.\n disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n // Register the new event in a variable which stores the relevant data\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta),\n raw: event\n };\n\n // Keep the most recent events\n if (recentWheelEvents.length >= 2) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n recentWheelEvents.push(newEvent);\n\n // If there is at least one previous recorded event:\n // If direction has changed or\n // if the scroll is quicker than the previous one:\n // Animate the slider.\n // Else (this is the first time the wheel is moved):\n // Animate the slider.\n if (prevEvent) {\n if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n animateSlider(newEvent);\n }\n } else {\n animateSlider(newEvent);\n }\n\n // If it's time to release the scroll:\n // Return now so you don't hit the preventDefault.\n if (releaseScroll(newEvent)) {\n return true;\n }\n } else {\n // Freemode or scrollContainer:\n\n // If we recently snapped after a momentum scroll, then ignore wheel events\n // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n // or if it's a new scroll (larger delta or inverse sign as last event before\n // an end-of-momentum snap).\n const newEvent = {\n time: now(),\n delta: Math.abs(delta),\n direction: Math.sign(delta)\n };\n const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n if (!ignoreWheelEvents) {\n lastEventBeforeSnap = undefined;\n let position = swiper.getTranslate() + delta * params.sensitivity;\n const wasBeginning = swiper.isBeginning;\n const wasEnd = swiper.isEnd;\n if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n swiper.setTransition(0);\n swiper.setTranslate(position);\n swiper.updateProgress();\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n swiper.updateSlidesClasses();\n }\n if (swiper.params.loop) {\n swiper.loopFix({\n direction: newEvent.direction < 0 ? 'next' : 'prev',\n byMousewheel: true\n });\n }\n if (swiper.params.freeMode.sticky) {\n // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n // the end of a momentum scroll by storing recent (N=15?) wheel events.\n // 1. do all N events have decreasing or same (absolute value) delta?\n // 2. did all N events arrive in the last M (M=500?) msecs?\n // 3. does the earliest event have an (absolute value) delta that's\n // at least P (P=1?) larger than the most recent event's delta?\n // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n // Snap immediately and ignore remaining wheel events in this scroll.\n // See comment above for \"remaining wheel events in this scroll\" determination.\n // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n clearTimeout(timeout);\n timeout = undefined;\n if (recentWheelEvents.length >= 15) {\n recentWheelEvents.shift(); // only store the last N events\n }\n\n const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n const firstEvent = recentWheelEvents[0];\n recentWheelEvents.push(newEvent);\n if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n recentWheelEvents.splice(0);\n } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n // We're at the end of the deceleration of a momentum scroll, so there's no need\n // to wait for more events. Snap ASAP on the next tick.\n // Also, because there's some remaining momentum we'll bias the snap in the\n // direction of the ongoing scroll because it's better UX for the scroll to snap\n // in the same direction as the scroll instead of reversing to snap. Therefore,\n // if it's already scrolled more than 20% in the current direction, keep going.\n const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n timeout = nextTick(() => {\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 0); // no delay; move on next tick\n }\n\n if (!timeout) {\n // if we get here, then we haven't detected the end of a momentum scroll, so\n // we'll consider a scroll \"complete\" when there haven't been any wheel events\n // for 500ms.\n timeout = nextTick(() => {\n const snapToThreshold = 0.5;\n lastEventBeforeSnap = newEvent;\n recentWheelEvents.splice(0);\n swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n }, 500);\n }\n }\n\n // Emit event\n if (!ignoreWheelEvents) emit('scroll', e);\n\n // Stop autoplay\n if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n // Return page scroll on edge positions\n if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n }\n }\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n return false;\n }\n function events(method) {\n let targetEl = swiper.el;\n if (swiper.params.mousewheel.eventsTarget !== 'container') {\n targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n }\n targetEl[method]('mouseenter', handleMouseEnter);\n targetEl[method]('mouseleave', handleMouseLeave);\n targetEl[method]('wheel', handle);\n }\n function enable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.removeEventListener('wheel', handle);\n return true;\n }\n if (swiper.mousewheel.enabled) return false;\n events('addEventListener');\n swiper.mousewheel.enabled = true;\n return true;\n }\n function disable() {\n if (swiper.params.cssMode) {\n swiper.wrapperEl.addEventListener(event, handle);\n return true;\n }\n if (!swiper.mousewheel.enabled) return false;\n events('removeEventListener');\n swiper.mousewheel.enabled = false;\n return true;\n }\n on('init', () => {\n if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n disable();\n }\n if (swiper.params.mousewheel.enabled) enable();\n });\n on('destroy', () => {\n if (swiper.params.cssMode) {\n enable();\n }\n if (swiper.mousewheel.enabled) disable();\n });\n Object.assign(swiper.mousewheel, {\n enable,\n disable\n });\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Navigation({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.shadowRoot.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 {\n nextEl,\n prevEl\n } = swiper.navigation;\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 {\n nextEl,\n prevEl\n } = swiper.navigation;\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 {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\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}","import classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport { elementIndex, elementOuterSize, elementParents } from '../../shared/utils.js';\nexport default function Pagination({\n swiper,\n extendParams,\n on,\n emit\n}) {\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 => {\n if (!Array.isArray(el)) el = [el].filter(e => !!e);\n return el;\n };\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 {\n bulletActiveClass\n } = swiper.params.pagination;\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 if (index < swiper.loopedSlides || index > swiper.slides.length - swiper.loopedSlides) {\n swiper.loopFix({\n direction: index < swiper.loopedSlides ? 'prev' : 'next',\n activeSlideIndex: index,\n slideTo: false\n });\n }\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 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 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 } else {\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 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.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 bulletEl.classList.remove(...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`));\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);\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(`${params.bulletActiveClass}-main`);\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);\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`);\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.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 paginationHTML += `<${params.bulletElement} 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 el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets = [...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.shadowRoot.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);\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.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(params.bulletActiveClass));\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 {\n el\n } = swiper.pagination;\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 let {\n el\n } = swiper.pagination;\n if (!Array.isArray(el)) el = [el].filter(element => !!element);\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 {\n el\n } = swiper.pagination;\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 {\n el\n } = swiper.pagination;\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}","import { elementChildren } from '../../shared/utils.js';\nexport default function Parallax({\n swiper,\n extendParams,\n on\n}) {\n extendParams({\n parallax: {\n enabled: false\n }\n });\n const setTransform = (el, progress) => {\n const {\n rtl\n } = swiper;\n const rtlFactor = rtl ? -1 : 1;\n const p = el.getAttribute('data-swiper-parallax') || '0';\n let x = el.getAttribute('data-swiper-parallax-x');\n let y = el.getAttribute('data-swiper-parallax-y');\n const scale = el.getAttribute('data-swiper-parallax-scale');\n const opacity = el.getAttribute('data-swiper-parallax-opacity');\n const rotate = el.getAttribute('data-swiper-parallax-rotate');\n if (x || y) {\n x = x || '0';\n y = y || '0';\n } else if (swiper.isHorizontal()) {\n x = p;\n y = '0';\n } else {\n y = p;\n x = '0';\n }\n if (x.indexOf('%') >= 0) {\n x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n } else {\n x = `${x * progress * rtlFactor}px`;\n }\n if (y.indexOf('%') >= 0) {\n y = `${parseInt(y, 10) * progress}%`;\n } else {\n y = `${y * progress}px`;\n }\n if (typeof opacity !== 'undefined' && opacity !== null) {\n const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n el.style.opacity = currentOpacity;\n }\n let transform = `translate3d(${x}, ${y}, 0px)`;\n if (typeof scale !== 'undefined' && scale !== null) {\n const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n transform += ` scale(${currentScale})`;\n }\n if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n const currentRotate = rotate * progress * -1;\n transform += ` rotate(${currentRotate}deg)`;\n }\n el.style.transform = transform;\n };\n const setTranslate = () => {\n const {\n el,\n slides,\n progress,\n snapGrid\n } = swiper;\n elementChildren(el, '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(subEl => {\n setTransform(subEl, progress);\n });\n slides.forEach((slideEl, slideIndex) => {\n let slideProgress = slideEl.progress;\n if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n }\n slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n slideEl.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]').forEach(subEl => {\n setTransform(subEl, slideProgress);\n });\n });\n };\n const setTransition = (duration = swiper.params.speed) => {\n const {\n el\n } = swiper;\n el.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(parallaxEl => {\n let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n if (duration === 0) parallaxDuration = 0;\n parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n });\n };\n on('beforeInit', () => {\n if (!swiper.params.parallax.enabled) return;\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n });\n on('init', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTranslate', () => {\n if (!swiper.params.parallax.enabled) return;\n setTranslate();\n });\n on('setTransition', (_swiper, duration) => {\n if (!swiper.params.parallax.enabled) return;\n setTransition(duration);\n });\n}","import { getDocument } from 'ssr-window';\nimport { createElement, elementOffset, nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const document = getDocument();\n let isTouched = false;\n let timeout = null;\n let dragTimeout = null;\n let dragStartPos;\n let dragSize;\n let trackSize;\n let divider;\n extendParams({\n scrollbar: {\n el: null,\n dragSize: 'auto',\n hide: false,\n draggable: false,\n snapOnRelease: true,\n lockClass: 'swiper-scrollbar-lock',\n dragClass: 'swiper-scrollbar-drag',\n scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n horizontalClass: `swiper-scrollbar-horizontal`,\n verticalClass: `swiper-scrollbar-vertical`\n }\n });\n swiper.scrollbar = {\n el: null,\n dragEl: null\n };\n function setTranslate() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n const params = swiper.params.scrollbar;\n const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n let newSize = dragSize;\n let newPos = (trackSize - dragSize) * progress;\n if (rtl) {\n newPos = -newPos;\n if (newPos > 0) {\n newSize = dragSize - newPos;\n newPos = 0;\n } else if (-newPos + dragSize > trackSize) {\n newSize = trackSize + newPos;\n }\n } else if (newPos < 0) {\n newSize = dragSize + newPos;\n newPos = 0;\n } else if (newPos + dragSize > trackSize) {\n newSize = trackSize - newPos;\n }\n if (swiper.isHorizontal()) {\n dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n dragEl.style.width = `${newSize}px`;\n } else {\n dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n dragEl.style.height = `${newSize}px`;\n }\n if (params.hide) {\n clearTimeout(timeout);\n el.style.opacity = 1;\n timeout = setTimeout(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n }\n function setTransition(duration) {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n }\n function updateSize() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n const {\n scrollbar\n } = swiper;\n const {\n dragEl,\n el\n } = scrollbar;\n dragEl.style.width = '';\n dragEl.style.height = '';\n trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n if (swiper.params.scrollbar.dragSize === 'auto') {\n dragSize = trackSize * divider;\n } else {\n dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n }\n if (swiper.isHorizontal()) {\n dragEl.style.width = `${dragSize}px`;\n } else {\n dragEl.style.height = `${dragSize}px`;\n }\n if (divider >= 1) {\n el.style.display = 'none';\n } else {\n el.style.display = '';\n }\n if (swiper.params.scrollbar.hide) {\n el.style.opacity = 0;\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n }\n }\n function getPointerPosition(e) {\n return swiper.isHorizontal() ? e.clientX : e.clientY;\n }\n function setDragPosition(e) {\n const {\n scrollbar,\n rtlTranslate: rtl\n } = swiper;\n const {\n el\n } = scrollbar;\n let positionRatio;\n positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n if (rtl) {\n positionRatio = 1 - positionRatio;\n }\n const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n swiper.updateProgress(position);\n swiper.setTranslate(position);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n function onDragStart(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n isTouched = true;\n dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n e.preventDefault();\n e.stopPropagation();\n wrapperEl.style.transitionDuration = '100ms';\n dragEl.style.transitionDuration = '100ms';\n setDragPosition(e);\n clearTimeout(dragTimeout);\n el.style.transitionDuration = '0ms';\n if (params.hide) {\n el.style.opacity = 1;\n }\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n }\n emit('scrollbarDragStart', e);\n }\n function onDragMove(e) {\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el,\n dragEl\n } = scrollbar;\n if (!isTouched) return;\n if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n setDragPosition(e);\n wrapperEl.style.transitionDuration = '0ms';\n el.style.transitionDuration = '0ms';\n dragEl.style.transitionDuration = '0ms';\n emit('scrollbarDragMove', e);\n }\n function onDragEnd(e) {\n const params = swiper.params.scrollbar;\n const {\n scrollbar,\n wrapperEl\n } = swiper;\n const {\n el\n } = scrollbar;\n if (!isTouched) return;\n isTouched = false;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style['scroll-snap-type'] = '';\n wrapperEl.style.transitionDuration = '';\n }\n if (params.hide) {\n clearTimeout(dragTimeout);\n dragTimeout = nextTick(() => {\n el.style.opacity = 0;\n el.style.transitionDuration = '400ms';\n }, 1000);\n }\n emit('scrollbarDragEnd', e);\n if (params.snapOnRelease) {\n swiper.slideToClosest();\n }\n }\n function events(method) {\n const {\n scrollbar,\n params\n } = swiper;\n const el = scrollbar.el;\n if (!el) return;\n const target = el;\n const activeListener = params.passiveListeners ? {\n passive: false,\n capture: false\n } : false;\n const passiveListener = params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n if (!target) return;\n const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n target[eventMethod]('pointerdown', onDragStart, activeListener);\n document[eventMethod]('pointermove', onDragMove, activeListener);\n document[eventMethod]('pointerup', onDragEnd, passiveListener);\n }\n function enableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('on');\n }\n function disableDraggable() {\n if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n events('off');\n }\n function init() {\n const {\n scrollbar,\n el: swiperEl\n } = swiper;\n swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n el: 'swiper-scrollbar'\n });\n const params = swiper.params.scrollbar;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.shadowRoot.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = document.querySelectorAll(params.el);\n } else if (!el) {\n el = params.el;\n }\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n el = swiperEl.querySelector(params.el);\n }\n if (el.length > 0) el = el[0];\n el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n let dragEl;\n if (el) {\n dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n if (!dragEl) {\n dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n el.append(dragEl);\n }\n }\n Object.assign(scrollbar, {\n el,\n dragEl\n });\n if (params.draggable) {\n enableDraggable();\n }\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n }\n function destroy() {\n const params = swiper.params.scrollbar;\n const el = swiper.scrollbar.el;\n if (el) {\n el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n }\n disableDraggable();\n }\n on('init', () => {\n if (swiper.params.scrollbar.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n updateSize();\n setTranslate();\n }\n });\n on('update resize observerUpdate lock unlock', () => {\n updateSize();\n });\n on('setTranslate', () => {\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n setTransition(duration);\n });\n on('enable disable', () => {\n const {\n el\n } = swiper.scrollbar;\n if (el) {\n el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n }\n });\n on('destroy', () => {\n destroy();\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n init();\n updateSize();\n setTranslate();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n if (swiper.scrollbar.el) {\n swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n }\n destroy();\n };\n Object.assign(swiper.scrollbar, {\n enable,\n disable,\n updateSize,\n setTranslate,\n init,\n destroy\n });\n}","import { getDocument } from 'ssr-window';\nimport { elementChildren, isObject } from '../../shared/utils.js';\nexport default function Thumb({\n swiper,\n extendParams,\n on\n}) {\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 {\n thumbs: thumbsParams\n } = swiper.params;\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 // newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n }\n thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n }\n }\n }\n on('beforeInit', () => {\n const {\n thumbs\n } = swiper.params;\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}","import { getDocument } from 'ssr-window';\nimport { createElement, elementChildren, setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n swiper,\n extendParams,\n on,\n emit\n}) {\n extendParams({\n virtual: {\n enabled: false,\n slides: [],\n cache: true,\n renderSlide: null,\n renderExternal: null,\n renderExternalUpdate: true,\n addSlidesBefore: 0,\n addSlidesAfter: 0\n }\n });\n let cssModeTimeout;\n const document = getDocument();\n swiper.virtual = {\n cache: {},\n from: undefined,\n to: undefined,\n slides: [],\n offset: 0,\n slidesGrid: []\n };\n const tempDOM = document.createElement('div');\n function renderSlide(slide, index) {\n const params = swiper.params.virtual;\n if (params.cache && swiper.virtual.cache[index]) {\n return swiper.virtual.cache[index];\n }\n // eslint-disable-next-line\n let slideEl;\n if (params.renderSlide) {\n slideEl = params.renderSlide.call(swiper, slide, index);\n if (typeof slideEl === 'string') {\n tempDOM.innerHTML = slideEl;\n slideEl = tempDOM.children[0];\n }\n } else if (swiper.isElement) {\n slideEl = createElement('swiper-slide');\n } else {\n slideEl = createElement('div', swiper.params.slideClass);\n }\n slideEl.setAttribute('data-swiper-slide-index', index);\n if (!params.renderSlide) {\n slideEl.innerHTML = slide;\n }\n if (params.cache) swiper.virtual.cache[index] = slideEl;\n return slideEl;\n }\n function update(force) {\n const {\n slidesPerView,\n slidesPerGroup,\n centeredSlides,\n loop: isLoop\n } = swiper.params;\n const {\n addSlidesBefore,\n addSlidesAfter\n } = swiper.params.virtual;\n const {\n from: previousFrom,\n to: previousTo,\n slides,\n slidesGrid: previousSlidesGrid,\n offset: previousOffset\n } = swiper.virtual;\n if (!swiper.params.cssMode) {\n swiper.updateActiveIndex();\n }\n const activeIndex = swiper.activeIndex || 0;\n let offsetProp;\n if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n let slidesAfter;\n let slidesBefore;\n if (centeredSlides) {\n slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n } else {\n slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n }\n let from = activeIndex - slidesBefore;\n let to = activeIndex + slidesAfter;\n if (!isLoop) {\n from = Math.max(from, 0);\n to = Math.min(to, slides.length - 1);\n }\n let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n if (isLoop && activeIndex >= slidesBefore) {\n from -= slidesBefore;\n if (!centeredSlides) offset += swiper.slidesGrid[0];\n } else if (isLoop && activeIndex < slidesBefore) {\n from = -slidesBefore;\n if (centeredSlides) offset += swiper.slidesGrid[0];\n }\n Object.assign(swiper.virtual, {\n from,\n to,\n offset,\n slidesGrid: swiper.slidesGrid,\n slidesBefore,\n slidesAfter\n });\n function onRendered() {\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n emit('virtualUpdate');\n }\n if (previousFrom === from && previousTo === to && !force) {\n if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n swiper.slides.forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset}px`;\n });\n }\n swiper.updateProgress();\n emit('virtualUpdate');\n return;\n }\n if (swiper.params.virtual.renderExternal) {\n swiper.params.virtual.renderExternal.call(swiper, {\n offset,\n from,\n to,\n slides: function getSlides() {\n const slidesToRender = [];\n for (let i = from; i <= to; i += 1) {\n slidesToRender.push(slides[i]);\n }\n return slidesToRender;\n }()\n });\n if (swiper.params.virtual.renderExternalUpdate) {\n onRendered();\n } else {\n emit('virtualUpdate');\n }\n return;\n }\n const prependIndexes = [];\n const appendIndexes = [];\n const getSlideIndex = index => {\n let slideIndex = index;\n if (index < 0) {\n slideIndex = slides.length + index;\n } else if (slideIndex >= slides.length) {\n // eslint-disable-next-line\n slideIndex = slideIndex - slides.length;\n }\n return slideIndex;\n };\n if (force) {\n swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach(slideEl => {\n slideEl.remove();\n });\n } else {\n for (let i = previousFrom; i <= previousTo; i += 1) {\n if (i < from || i > to) {\n const slideIndex = getSlideIndex(i);\n swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`).forEach(slideEl => {\n slideEl.remove();\n });\n }\n }\n }\n const loopFrom = isLoop ? -slides.length : 0;\n const loopTo = isLoop ? slides.length * 2 : slides.length;\n for (let i = loopFrom; i < loopTo; i += 1) {\n if (i >= from && i <= to) {\n const slideIndex = getSlideIndex(i);\n if (typeof previousTo === 'undefined' || force) {\n appendIndexes.push(slideIndex);\n } else {\n if (i > previousTo) appendIndexes.push(slideIndex);\n if (i < previousFrom) prependIndexes.push(slideIndex);\n }\n }\n }\n appendIndexes.forEach(index => {\n swiper.slidesEl.append(renderSlide(slides[index], index));\n });\n if (isLoop) {\n for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n const index = prependIndexes[i];\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n }\n } else {\n prependIndexes.sort((a, b) => b - a);\n prependIndexes.forEach(index => {\n swiper.slidesEl.prepend(renderSlide(slides[index], index));\n });\n }\n elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n slideEl.style[offsetProp] = `${offset}px`;\n });\n onRendered();\n }\n function appendSlide(slides) {\n if (typeof slides === 'object' && 'length' in slides) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.push(slides[i]);\n }\n } else {\n swiper.virtual.slides.push(slides);\n }\n update(true);\n }\n function prependSlide(slides) {\n const activeIndex = swiper.activeIndex;\n let newActiveIndex = activeIndex + 1;\n let numberOfNewSlides = 1;\n if (Array.isArray(slides)) {\n for (let i = 0; i < slides.length; i += 1) {\n if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n }\n newActiveIndex = activeIndex + slides.length;\n numberOfNewSlides = slides.length;\n } else {\n swiper.virtual.slides.unshift(slides);\n }\n if (swiper.params.virtual.cache) {\n const cache = swiper.virtual.cache;\n const newCache = {};\n Object.keys(cache).forEach(cachedIndex => {\n const cachedEl = cache[cachedIndex];\n const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n if (cachedElIndex) {\n cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n }\n newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n });\n swiper.virtual.cache = newCache;\n }\n update(true);\n swiper.slideTo(newActiveIndex, 0);\n }\n function removeSlide(slidesIndexes) {\n if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n let activeIndex = swiper.activeIndex;\n if (Array.isArray(slidesIndexes)) {\n for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n swiper.virtual.slides.splice(slidesIndexes[i], 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes[i]];\n }\n if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n } else {\n swiper.virtual.slides.splice(slidesIndexes, 1);\n if (swiper.params.virtual.cache) {\n delete swiper.virtual.cache[slidesIndexes];\n }\n if (slidesIndexes < activeIndex) activeIndex -= 1;\n activeIndex = Math.max(activeIndex, 0);\n }\n update(true);\n swiper.slideTo(activeIndex, 0);\n }\n function removeAllSlides() {\n swiper.virtual.slides = [];\n if (swiper.params.virtual.cache) {\n swiper.virtual.cache = {};\n }\n update(true);\n swiper.slideTo(0, 0);\n }\n on('beforeInit', () => {\n if (!swiper.params.virtual.enabled) return;\n let domSlidesAssigned;\n if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n if (slides && slides.length) {\n swiper.virtual.slides = [...slides];\n domSlidesAssigned = true;\n slides.forEach((slideEl, slideIndex) => {\n slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n swiper.virtual.cache[slideIndex] = slideEl;\n slideEl.remove();\n });\n }\n }\n if (!domSlidesAssigned) {\n swiper.virtual.slides = swiper.params.virtual.slides;\n }\n swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n if (!swiper.params.initialSlide) {\n update();\n }\n });\n on('setTranslate', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode && !swiper._immediateVirtual) {\n clearTimeout(cssModeTimeout);\n cssModeTimeout = setTimeout(() => {\n update();\n }, 100);\n } else {\n update();\n }\n });\n on('init update resize', () => {\n if (!swiper.params.virtual.enabled) return;\n if (swiper.params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n }\n });\n Object.assign(swiper.virtual, {\n appendSlide,\n prependSlide,\n removeSlide,\n removeAllSlides,\n update\n });\n}","import { getWindow } from 'ssr-window';\nimport { elementChildren, elementOffset, elementParents, getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n swiper,\n extendParams,\n on,\n emit\n}) {\n const window = getWindow();\n extendParams({\n zoom: {\n enabled: false,\n maxRatio: 3,\n minRatio: 1,\n toggle: true,\n containerClass: 'swiper-zoom-container',\n zoomedSlideClass: 'swiper-slide-zoomed'\n }\n });\n swiper.zoom = {\n enabled: false\n };\n let currentScale = 1;\n let isScaling = false;\n let fakeGestureTouched;\n let fakeGestureMoved;\n const evCache = [];\n const gesture = {\n slideEl: undefined,\n slideWidth: undefined,\n slideHeight: undefined,\n imageEl: undefined,\n imageWrapEl: undefined,\n maxRatio: 3\n };\n const image = {\n isTouched: undefined,\n isMoved: undefined,\n currentX: undefined,\n currentY: undefined,\n minX: undefined,\n minY: undefined,\n maxX: undefined,\n maxY: undefined,\n width: undefined,\n height: undefined,\n startX: undefined,\n startY: undefined,\n touchesStart: {},\n touchesCurrent: {}\n };\n const velocity = {\n x: undefined,\n y: undefined,\n prevPositionX: undefined,\n prevPositionY: undefined,\n prevTime: undefined\n };\n let scale = 1;\n Object.defineProperty(swiper.zoom, 'scale', {\n get() {\n return scale;\n },\n set(value) {\n if (scale !== value) {\n const imageEl = gesture.imageEl;\n const slideEl = gesture.slideEl;\n emit('zoomChange', value, imageEl, slideEl);\n }\n scale = value;\n }\n });\n function getDistanceBetweenTouches() {\n if (evCache.length < 2) return 1;\n const x1 = evCache[0].pageX;\n const y1 = evCache[0].pageY;\n const x2 = evCache[1].pageX;\n const y2 = evCache[1].pageY;\n const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n return distance;\n }\n function getScaleOrigin() {\n if (evCache.length < 2) return {\n x: null,\n y: null\n };\n const box = gesture.imageEl.getBoundingClientRect();\n return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];\n }\n function getSlideSelector() {\n return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n }\n function eventWithinSlide(e) {\n const slideSelector = getSlideSelector();\n if (e.target.matches(slideSelector)) return true;\n if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n return false;\n }\n function eventWithinZoomContainer(e) {\n const selector = `.${swiper.params.zoom.containerClass}`;\n if (e.target.matches(selector)) return true;\n if ([...swiper.el.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n return false;\n }\n\n // Events\n function onGestureStart(e) {\n if (e.pointerType === 'mouse') {\n evCache.splice(0, evCache.length);\n }\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n evCache.push(e);\n if (evCache.length < 2) {\n return;\n }\n fakeGestureTouched = true;\n gesture.scaleStart = getDistanceBetweenTouches();\n if (!gesture.slideEl) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n if (!gesture.imageWrapEl) {\n gesture.imageEl = undefined;\n return;\n }\n gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n }\n if (gesture.imageEl) {\n const [originX, originY] = getScaleOrigin();\n gesture.imageEl.style.transformOrigin = `${originX}px ${originY}px`;\n gesture.imageEl.style.transitionDuration = '0ms';\n }\n isScaling = true;\n }\n function onGestureChange(e) {\n if (!eventWithinSlide(e)) return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache[pointerIndex] = e;\n if (evCache.length < 2) {\n return;\n }\n fakeGestureMoved = true;\n gesture.scaleMove = getDistanceBetweenTouches();\n if (!gesture.imageEl) {\n return;\n }\n zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n if (zoom.scale > gesture.maxRatio) {\n zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n }\n if (zoom.scale < params.minRatio) {\n zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n }\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function onGestureEnd(e) {\n if (!eventWithinSlide(e)) return;\n if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n const params = swiper.params.zoom;\n const zoom = swiper.zoom;\n const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n if (!fakeGestureTouched || !fakeGestureMoved) {\n return;\n }\n fakeGestureTouched = false;\n fakeGestureMoved = false;\n if (!gesture.imageEl) return;\n zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n currentScale = zoom.scale;\n isScaling = false;\n if (zoom.scale === 1) gesture.slideEl = undefined;\n }\n function onTouchStart(e) {\n const device = swiper.device;\n if (!gesture.imageEl) return;\n if (image.isTouched) return;\n if (device.android && e.cancelable) e.preventDefault();\n image.isTouched = true;\n image.touchesStart.x = e.pageX;\n image.touchesStart.y = e.pageY;\n }\n function onTouchMove(e) {\n if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n swiper.allowClick = false;\n if (!image.isTouched || !gesture.slideEl) return;\n if (!image.isMoved) {\n image.width = gesture.imageEl.offsetWidth;\n image.height = gesture.imageEl.offsetHeight;\n image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n gesture.slideWidth = gesture.slideEl.offsetWidth;\n gesture.slideHeight = gesture.slideEl.offsetHeight;\n gesture.imageWrapEl.style.transitionDuration = '0ms';\n }\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n if (!image.isMoved && !isScaling) {\n if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n image.isTouched = false;\n return;\n }\n if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n image.isTouched = false;\n return;\n }\n }\n if (e.cancelable) {\n e.preventDefault();\n }\n e.stopPropagation();\n image.isMoved = true;\n image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n if (image.currentX < image.minX) {\n image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n }\n if (image.currentX > image.maxX) {\n image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n }\n if (image.currentY < image.minY) {\n image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n }\n if (image.currentY > image.maxY) {\n image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n }\n\n // Velocity\n if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n if (!velocity.prevTime) velocity.prevTime = Date.now();\n velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n velocity.prevPositionX = image.touchesCurrent.x;\n velocity.prevPositionY = image.touchesCurrent.y;\n velocity.prevTime = Date.now();\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTouchEnd() {\n const zoom = swiper.zoom;\n if (!gesture.imageEl) return;\n if (!image.isTouched || !image.isMoved) {\n image.isTouched = false;\n image.isMoved = false;\n return;\n }\n image.isTouched = false;\n image.isMoved = false;\n let momentumDurationX = 300;\n let momentumDurationY = 300;\n const momentumDistanceX = velocity.x * momentumDurationX;\n const newPositionX = image.currentX + momentumDistanceX;\n const momentumDistanceY = velocity.y * momentumDurationY;\n const newPositionY = image.currentY + momentumDistanceY;\n\n // Fix duration\n if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n image.currentX = newPositionX;\n image.currentY = newPositionY;\n\n // Define if we need image drag\n const scaledWidth = image.width * zoom.scale;\n const scaledHeight = image.height * zoom.scale;\n image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n image.maxX = -image.minX;\n image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n image.maxY = -image.minY;\n image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n }\n function onTransitionEnd() {\n const zoom = swiper.zoom;\n if (gesture.slideEl && swiper.previousIndex !== swiper.activeIndex) {\n if (gesture.imageEl) {\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n }\n if (gesture.imageWrapEl) {\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.slideEl = undefined;\n gesture.imageEl = undefined;\n gesture.imageWrapEl = undefined;\n }\n }\n function zoomIn(e) {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (e && e.target) {\n gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n }\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.touchAction = 'none';\n }\n gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n let touchX;\n let touchY;\n let offsetX;\n let offsetY;\n let diffX;\n let diffY;\n let translateX;\n let translateY;\n let imageWidth;\n let imageHeight;\n let scaledWidth;\n let scaledHeight;\n let translateMinX;\n let translateMinY;\n let translateMaxX;\n let translateMaxY;\n let slideWidth;\n let slideHeight;\n if (typeof image.touchesStart.x === 'undefined' && e) {\n touchX = e.pageX;\n touchY = e.pageY;\n } else {\n touchX = image.touchesStart.x;\n touchY = image.touchesStart.y;\n }\n const forceZoomRatio = typeof e === 'number' ? e : null;\n if (currentScale === 1 && forceZoomRatio) {\n touchX = undefined;\n touchY = undefined;\n }\n zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n if (e && !(currentScale === 1 && forceZoomRatio)) {\n slideWidth = gesture.slideEl.offsetWidth;\n slideHeight = gesture.slideEl.offsetHeight;\n offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n diffX = offsetX + slideWidth / 2 - touchX;\n diffY = offsetY + slideHeight / 2 - touchY;\n imageWidth = gesture.imageEl.offsetWidth;\n imageHeight = gesture.imageEl.offsetHeight;\n scaledWidth = imageWidth * zoom.scale;\n scaledHeight = imageHeight * zoom.scale;\n translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n translateMaxX = -translateMinX;\n translateMaxY = -translateMinY;\n translateX = diffX * zoom.scale;\n translateY = diffY * zoom.scale;\n if (translateX < translateMinX) {\n translateX = translateMinX;\n }\n if (translateX > translateMaxX) {\n translateX = translateMaxX;\n }\n if (translateY < translateMinY) {\n translateY = translateMinY;\n }\n if (translateY > translateMaxY) {\n translateY = translateMaxY;\n }\n } else {\n translateX = 0;\n translateY = 0;\n }\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n }\n function zoomOut() {\n const zoom = swiper.zoom;\n const params = swiper.params.zoom;\n if (!gesture.slideEl) {\n if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n } else {\n gesture.slideEl = swiper.slides[swiper.activeIndex];\n }\n let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n if (imageEl) {\n imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n }\n gesture.imageEl = imageEl;\n if (imageEl) {\n gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n } else {\n gesture.imageWrapEl = undefined;\n }\n }\n if (!gesture.imageEl || !gesture.imageWrapEl) return;\n if (swiper.params.cssMode) {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.style.touchAction = '';\n }\n zoom.scale = 1;\n currentScale = 1;\n gesture.imageWrapEl.style.transitionDuration = '300ms';\n gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n gesture.imageEl.style.transitionDuration = '300ms';\n gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n gesture.slideEl = undefined;\n }\n\n // Toggle Zoom\n function zoomToggle(e) {\n const zoom = swiper.zoom;\n if (zoom.scale && zoom.scale !== 1) {\n // Zoom Out\n zoomOut();\n } else {\n // Zoom In\n zoomIn(e);\n }\n }\n function getListeners() {\n const passiveListener = swiper.params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n const activeListenerWithCapture = swiper.params.passiveListeners ? {\n passive: false,\n capture: true\n } : true;\n return {\n passiveListener,\n activeListenerWithCapture\n };\n }\n\n // Attach/Detach Events\n function enable() {\n const zoom = swiper.zoom;\n if (zoom.enabled) return;\n zoom.enabled = true;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n\n swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n function disable() {\n const zoom = swiper.zoom;\n if (!zoom.enabled) return;\n zoom.enabled = false;\n const {\n passiveListener,\n activeListenerWithCapture\n } = getListeners();\n\n // Scale image\n swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n });\n\n // Move image\n swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n }\n on('init', () => {\n if (swiper.params.zoom.enabled) {\n enable();\n }\n });\n on('destroy', () => {\n disable();\n });\n on('touchStart', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchStart(e);\n });\n on('touchEnd', (_s, e) => {\n if (!swiper.zoom.enabled) return;\n onTouchEnd(e);\n });\n on('doubleTap', (_s, e) => {\n if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n zoomToggle(e);\n }\n });\n on('transitionEnd', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n onTransitionEnd();\n }\n });\n on('slideChange', () => {\n if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n onTransitionEnd();\n }\n });\n Object.assign(swiper.zoom, {\n enable,\n disable,\n in: zoomIn,\n out: zoomOut,\n toggle: zoomToggle\n });\n}","export default function classesToSelector(classes = '') {\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import { createElement, elementChildren } from './utils.js';\nexport default function 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}","import { createElement, getSlideTransformEl } from './utils.js';\nexport default function createShadow(params, slideEl, side) {\n const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n const shadowContainer = getSlideTransformEl(slideEl);\n let shadowEl = shadowContainer.querySelector(`.${shadowClass}`);\n if (!shadowEl) {\n shadowEl = createElement('div', `swiper-slide-shadow${side ? `-${side}` : ''}`);\n shadowContainer.append(shadowEl);\n }\n return shadowEl;\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return;\n // remove shadows\n swiper.slides.forEach(slideEl => {\n slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n });\n // create new one\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","import { getSlideTransformEl } from './utils.js';\nexport default function effectTarget(effectParams, slideEl) {\n const transformEl = getSlideTransformEl(slideEl);\n if (transformEl !== slideEl) {\n transformEl.style.backfaceVisibility = 'hidden';\n transformEl.style['-webkit-backface-visibility'] = 'hidden';\n }\n return transformEl;\n}","import { elementTransitionEnd } from './utils.js';\nexport default function effectVirtualTransitionEnd({\n swiper,\n duration,\n transformElements,\n allSlides\n}) {\n const {\n activeIndex\n } = swiper;\n const getSlide = el => {\n if (!el.parentElement) {\n // assume shadow root\n const slide = swiper.slides.filter(slideEl => slideEl.shadowEl && slideEl.shadowEl === el.parentNode)[0];\n return slide;\n }\n return el.parentElement;\n };\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let transitionEndTarget;\n if (allSlides) {\n transitionEndTarget = transformElements;\n } else {\n transitionEndTarget = transformElements.filter(transformEl => {\n const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n return swiper.getSlideIndex(el) === activeIndex;\n });\n }\n transitionEndTarget.forEach(el => {\n elementTransitionEnd(el, () => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true\n });\n swiper.wrapperEl.dispatchEvent(evt);\n });\n });\n }\n}","import { getWindow } from 'ssr-window';\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 [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\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}\nexport { getBrowser };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\nfunction calcDevice({\n userAgent\n} = {}) {\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 (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\nexport { getDevice };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && '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}\nexport { getSupport };","export const 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 const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n};","import { getWindow, getDocument } from 'ssr-window';\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 = 0) {\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 = 'x') {\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\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(...args) {\n const to = Object(args[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < args.length; i += 1) {\n const nextSource = args[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({\n swiper,\n targetPosition,\n side\n}) {\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.shadowEl && slideEl.shadowEl.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction findElementsInElements(elements = [], selector = '') {\n const found = [];\n elements.forEach(el => {\n found.push(...el.querySelectorAll(selector));\n });\n return found;\n}\nfunction elementChildren(element, selector = '') {\n return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes = []) {\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : [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 { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty, getSlideTransformEl,\n// dom\nfindElementsInElements, createElement, elementChildren, elementOffset, elementPrevAll, elementNextAll, elementStyle, elementIndex, elementParents, elementTransitionEnd, elementOuterSize };","/**\n * Swiper 9.1.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 28, 2023\n */\n\nimport Swiper from './core/core.js';\nexport { default as Swiper, default } from './core/core.js';\nimport Virtual from './modules/virtual/virtual.js';\nimport Keyboard from './modules/keyboard/keyboard.js';\nimport Mousewheel from './modules/mousewheel/mousewheel.js';\nimport Navigation from './modules/navigation/navigation.js';\nimport Pagination from './modules/pagination/pagination.js';\nimport Scrollbar from './modules/scrollbar/scrollbar.js';\nimport Parallax from './modules/parallax/parallax.js';\nimport Zoom from './modules/zoom/zoom.js';\nimport Controller from './modules/controller/controller.js';\nimport A11y from './modules/a11y/a11y.js';\nimport History from './modules/history/history.js';\nimport HashNavigation from './modules/hash-navigation/hash-navigation.js';\nimport Autoplay from './modules/autoplay/autoplay.js';\nimport Thumbs from './modules/thumbs/thumbs.js';\nimport FreeMode from './modules/free-mode/free-mode.js';\nimport Grid from './modules/grid/grid.js';\nimport Manipulation from './modules/manipulation/manipulation.js';\nimport EffectFade from './modules/effect-fade/effect-fade.js';\nimport EffectCube from './modules/effect-cube/effect-cube.js';\nimport EffectFlip from './modules/effect-flip/effect-flip.js';\nimport EffectCoverflow from './modules/effect-coverflow/effect-coverflow.js';\nimport EffectCreative from './modules/effect-creative/effect-creative.js';\nimport EffectCards from './modules/effect-cards/effect-cards.js';\n\n// Swiper Class\nconst modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumbs, FreeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards];\nSwiper.use(modules);\n","/**\n * Swiper 9.1.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: February 28, 2023\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","window.jQuery = window.$ = require('jquery');\nvar processInclude = require('base/util');\n\n$(document).ready(function () {\n //processInclude(require('base/components/menu'));\n //processInclude(require('base/components/cookie'));\n //processInclude(require('base/components/consentTracking'));\n processInclude(require('base/components/footer'));\n processInclude(require('base/components/collapsibleItem'));\n processInclude(require('base/components/search'));\n //processInclude(require('base/components/clientSideValidation'));\n processInclude(require('base/components/toolTip'));\n\n // CUSTOM COMPONENT\n processInclude(require('./components/carousel'))\n processInclude(require('./components/swiper'))\n processInclude(require('./components/header'));\n processInclude(require('./components/miniCart'));\n processInclude(require('./components/countrySelector'));\n processInclude(require('./components/toastr'));\n processInclude(require('./components/inputPassword'));\n processInclude(require('./components/inputDate'));\n processInclude(require('./components/backTopBtn'));\n processInclude(require('./components/checkbox'));\n});\n\nrequire('./thirdParty/bootstrap');\nrequire('./components/spinner');\nrequire('slick-carousel/slick/slick');\nrequire('select2/dist/js/select2');\n\n//custom accordion checkout payments\n$(document).ready(function () {\n // $(\".payment-options .nav-group\").click(function () {\n // var $navItem = $(this).find('.nav-item');\n // if(!$navItem.hasClass('disabled')) {\n // $(\".payment-options .nav-item\").removeClass(\"active\");\n // $(\".payment-options .tab-pane\").removeClass(\"active\");\n // $navItem.addClass(\"active\");\n // $navItem.parent().find('.tab-pane').addClass(\"active\");\n // }\n // });\n //ToastMessage showed after refresh page\n var urlParams = new URLSearchParams(location.search);\n if (urlParams.has('toastr')) {\n var toastParamUrl = urlParams.get('toastr');\n var toastMessage = $('#toastMessage').attr('data-message');\n var toastMessageRemoved = $('#toastMessageRemoved').attr('data-message-removed');\n switch (toastParamUrl) {\n case ('success'):\n toastr.success(toastMessage);\n break;\n case ('removed'):\n toastr.success(toastMessageRemoved);\n break;\n default:\n toastr.error(toastMessage);\n }\n } else {\n var isPaymentError = $('#toastMessage').attr('data-payment-error');\n if (isPaymentError) {\n var toastMessage = $('#toastMessage').attr('data-message');\n toastr.error(toastMessage);\n }\n }\n});"],"names":["base","require","focusHelper","debounce","debounceQuantity","updateQuantity","debounceUndo","ajaxDeleteUndo","scope","$parent","$","parent","preSelectQty","hasClass","val","data","quantity","parseInt","productID","url","uuid","urlParams","pid","appendToUrl","parents","spinner","start","trigger","ajax","type","context","dataType","success","i","items","length","lineItem","UUID","min","quantityOptions","minOrderQuantity","max","maxOrderQuantity","newQuantity","cardItem","closest","find","removeClass","prop","addClass","availability","notAvailable","isOrderable","html","selectMobileOptions","j","dataset","disabled","empty","append","totals","discountsHtml","updateCartTotals","updateApproachingDiscounts","approachingDiscounts","updateAvailability","validateBasket","stop","location","reload","siblings","removedProducts","updatedQuantity","forEach","removedProduct","remove","unavailableProducts","product","toastr","error","updateQuantityMessage","listBundleOutOfStock","err","responseJSON","redirectUrl","window","href","unavailableMessage","unavailableMessageDescription","mobileSelect","desktopButton","createErrorNotification","errorMessage","params","newUrl","indexOf","Object","keys","map","key","encodeURIComponent","join","valid","errorInfo","message","resources","emptyCartMsg","numberOfItems","numItems","attr","minicartCountOfItems","title","numberOfItem","totalShippingCost","totalTax","grandTotal","saveTotal","merchandizeTotalPrice","subTotal","orderLevelDiscountTotal","value","formatted","shippingLevelDiscountTotal","item","renderedPrice","priceTotal","renderedPromotions","benefitHtml","is","slideUp","merchandisePercentOf","toFixed","discountMsg","benefitBarMsg","slideDown","initProgressBar","messages","lowStockIcons","leadTime","showlowStockMessage","findItem","array","match","l","call","updateProductDetails","replaceWith","renderedTemplate","getModalHtmlElement","htmlString","parseHtml","$html","parseHTML","body","footer","children","fillModalElement","editProductUrl","method","parsedHtml","text","closeButtonText","enterDialogMessage","modal","confirmDelete","actionUrl","productName","$deleteConfirmBtn","$productToRemoveSpan","$progressBar","animate","width","$this","qty","cart","showAlertUndo","pname","deletedQuantity","labelUndo","labelItemsRemoved","toastAlertUndo","document","on","module","exports","ready","$element","$elementPosition","offset","top","scroll","$scrollViewport","scrollTop","innerHeight","height","path","pathname","page","split","pop","history","replaceState","e","preventDefault","unavailable","iconEmptyCart","basket","htmlEmptyCartTemplate","backToShoppingAbsUrl","backToShopping","needHelpText","emptyCartTooltipMsg","toBeDeletedUUIDs","hasBonusProduct","change","methodID","submit","hide","show","$form","serialize","couponCode","code","methods","editBonusProducts","focus","focusParams","event","containerSelector","firstElementSelector","lastElementSelector","nextToLastElementSelector","setTabNextFocus","response","dialog","$productContainer","readyToOrder","available","allAvailable","toArray","every","allReady","info_selectforstock","container","id","selectedQuantity","selectedOptionValueId","updateProductUrl","form","getPidValue","cartModel","uuidToBeDeleted","fadeOut","selectAttribute","colorAttribute","removeBonusProduct","selectBonusProduct","enableBonusProductSelection","showMoreBonusProducts","addBonusProductsToCart","focusChooseBonusProductModal","trapChooseBonusProductModalFocus","onClosingChooseBonusProductModal","footerTriggered","SCROLL_NUMBER","isScrolledIntoView","getPageHeight","getWindowHeight","backTopBtn","elem","docViewTop","docViewBottom","elemTop","elemBottom","documentElement","clientHeight","Math","scrollHeight","offsetHeight","Carousel","element","ctx","slidesContainer","matchMedia","opt","getOpts","not","slick","carousel","target","opts","res","option","responsive","resPresent","each","resolution","push","breakpoint","settings","customPaging","$elem","$slides","src","undefined","alt","txt","test","accessibility","adaptiveHeight","asNavFor","autoplay","autoplaySpeed","appendDots","appendArrows","arrows","prevArrow","nextArrow","centerMode","centerPadding","cssEase","dots","dotsClass","draggable","easing","edgeFriction","fade","focusOnSelect","infinite","initialSlide","lazyLoad","mobileFirst","pauseOnHover","pauseOnDotsHover","respondTo","rows","slide","slidesPerRow","slidesToShow","slidesToScroll","speed","swipe","swipeToSlide","touchMove","touchThreshold","useCSS","variableWidth","vertical","verticalSwiping","waitForAnimate","zIndex","slideTitleSelector","titleElement","titleType","setResponsiveSetting","index","name","keyboardAccessibility","initsGeneralSelect","setChangeLanguageModalOkButtonHandler","action","queryString","selectedOption","localeCode","localeCurrencyCode","CurrencyCode","$countryOptions","first","next","prev","openChangeLanguageModal","initGeneralSelect","$openProfileMenuClass","$openProfileMenuTrigger","$contentProfileMenu","DELTA","BREAK_POINT_MBL","LAST_SCROLL_TOP","$navbarHeight","outerHeight","$isMobile","isScrollDownStickyHeader","initScrollTop","abs","css","$target","toggleClass","stopPropagation","parsePhoneNumber","examples","formatNumberInternational","country","number","parseNumber","internationalNumber","format","spaceSeparatedComponents","formatState","toUpperCase","optimage","templateHtml","$opt","formatResult","initPrefixSelect","selectPrefixPhone","select2","templateResult","templateSelection","dropdownParent","selectGeneral","minimumResultsForSearch","placeholder","allowClear","generalSelect","ajaxComplete","parentBox","prefixSelect","selectToInit","selectToRender","selectPrefix","countrySelected","inputPhone","internationalPhoneNumber","formattingPlaceholder","formatNational","digitPhone","generalErrorCh","generalErrorWorld","isValid","countryPrefix","asYouType","AsYouType","digitingNumber","input","toString","checkDigitPhone","replace","valInput","slice","asYouType2","newDigitingNumber","phoneNumbeFormatted","shippingPhone","shippingPrefixPhone","billingPhone","billingPrefixPhone","currentTarget","shippingInternationalNumber","billingInternationalNumber","$end_date_input","dateToDate","date","Date","checkDateInput","$buttonShowHidePassword","$inputRegisterPassword","validatePassword","selector","regex","pswd","showHidePassword","$input","$buttonIconsEye","matchRegex","keyup","$inputParent","blur","keyFunctions","preFunction","which","supportedKeyCodes","returnedScope","updateMiniCart","count","isNumeric","quantityTotal","get","has","addSpinner","$veil","tagName","after","click","removeSpinner","off","fn","Fn","Swiper","SwiperCombineSlider","element1","element2","sliderOne","sliderTwo","loop","allowTouchMove","breakpoints","slidesPerView","direction","init","slides","setAttribute","pagination","el","clickable","dynamicBullets","dynamicMainBullets","navigation","nextEl","prevEl","controller","control","Toastr","msg","closeButton","debug","newestOnTop","progressBar","positionClass","preventDuplicates","iconClasses","info","warning","toastClass","titleClass","messageClass","closeClass","showDuration","onclick","hideDuration","timeOut","extendedTimeOut","showEasing","hideEasing","showMethod","hideMethod","tapToDismiss","options","closeHtml","onShown","sizes","size","KEYCODE_TAB","isTabPressed","keyCode","firstFocusableEl","lastFocusableEl","linkElements","shiftKey","scrollAnimate","displayMessage","button","status","setTimeout","removeAttr","emailId","position","endpoint","minChars","UP_KEY","DOWN_KEY","DIRECTION_DOWN","DIRECTION_UP","getSuggestionsWrapper","isMobileSearch","clearModals","applyModals","tearDownSuggestions","unbind","toggleSuggestionsIcon","mobileSearchIcon","iconSearch","iconSearchClose","handleMoreContentBelowIcon","fadeIn","positionSuggestions","$scope","$suggestions","processResponse","$suggestionsWrapper","suggestionsList","getSuggestions","handleArrow","filter","idx","eq","removeProp","debounceSuggestions","$el","getQuantitySelector","quantitySelected","quantitySelectedModal","quantitySelectedPDP","getQuantitySelected","processSwatchValues","msgs","values","attrValue","$attrValue","$swatchButton","selected","assistiveSelectedText","selectable","processNonSwatchValues","$attr","$defaultOption","resetUrl","updateAttrs","attrs","attrsWithSwatches","availabilityValue","availabilityMessages","getAttributesHtml","attributes","attributeGroup","ID","attribute","label","updateOptions","optionsHtml","createCarousel","imgs","carouselId","appendTo","detach","handleVariantResponse","isChoiceOfBonusProducts","isVaraint","variationAttributes","productType","primaryImageUrls","images","large","$priceSelector","price","promotionsHtml","$selectButton","updateQuantities","quantities","attributeSelect","selectedValueUrl","getAddToCartUrl","chooseBonusProducts","bonusUrl","bonusChoiceRuleBased","showProductsUrlRuleBased","showProductsUrlListBased","maxBonusItems","pliUUID","addToCartUrl","pageSize","labels","selectprods","handlePostCartAdd","messageType","newBonusDiscountLineItem","getChildProducts","childProducts","JSON","stringify","getOptions","$elOption","urlValue","selectedValueId","optionId","miniCartReportingUrl","addToCart","pidsObj","setPids","reportingURL","$choiceOfBonusProduct","maxPids","submittedQty","totalQty","optionID","valueId","selectedBonusProductHtml","$selected","$readyToOrderBonusProducts","pidsObject","bonusProducts","qtyOption","productId","msgSuccess","include","Util","NAME","VERSION","DATA_KEY","EVENT_KEY","DATA_API_KEY","JQUERY_NO_CONFLICT","Selector","DISMISS","Event","CLOSE","CLOSED","CLICK_DATA_API","ClassName","ALERT","FADE","SHOW","Alert","_element","rootElement","_getRootElement","customEvent","_triggerCloseEvent","isDefaultPrevented","_removeElement","removeData","getSelectorFromElement","querySelector","closeEvent","_destroyElement","transitionDuration","getTransitionDurationFromElement","one","TRANSITION_END","emulateTransitionEnd","config","alertInstance","close","_handleDismiss","_jQueryInterface","Constructor","noConflict","ARROW_LEFT_KEYCODE","ARROW_RIGHT_KEYCODE","TOUCHEVENT_COMPAT_WAIT","SWIPE_THRESHOLD","Default","interval","keyboard","pause","wrap","touch","DefaultType","Direction","NEXT","PREV","LEFT","RIGHT","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHSTART","TOUCHMOVE","TOUCHEND","POINTERDOWN","POINTERUP","DRAG_START","LOAD_DATA_API","CAROUSEL","ACTIVE","ITEM","POINTER_EVENT","ACTIVE_ITEM","ITEM_IMG","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","PointerType","TOUCH","PEN","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","Boolean","PointerEvent","MSPointerEvent","_addEventListeners","_slide","hidden","triggerTransitionEnd","cycle","clearInterval","setInterval","visibilityState","nextWhenVisible","bind","activeIndex","_getItemIndex","to","typeCheckConfig","absDeltax","_keydown","_addTouchEventListeners","originalEvent","pointerType","clientX","touches","move","end","_handleSwipe","clearTimeout","querySelectorAll","classList","add","parentNode","activeElement","isNextDirection","isPrevDirection","lastItemIndex","isGoingToWrap","delta","itemIndex","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","indicators","nextIndicator","activeElementIndex","nextElement","_getItemByDirection","nextElementIndex","isCycling","directionalClassName","orderClassName","_triggerSlideEvent","_setActiveIndicatorElement","slidEvent","reflow","nextElementInterval","getAttribute","defaultInterval","TypeError","ride","slideIndex","_dataApiClickHandler","carousels","len","$carousel","toggle","SHOWN","HIDE","HIDDEN","COLLAPSE","COLLAPSING","COLLAPSED","Dimension","WIDTH","HEIGHT","ACTIVES","DATA_TOGGLE","Collapse","_isTransitioning","_triggerArray","toggleList","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","actives","activesData","contains","startEvent","dimension","_getDimension","style","setTransitioning","complete","capitalizedDimension","scrollSize","getBoundingClientRect","triggerArrayLength","isTransitioning","hasWidth","isElement","jquery","_getTargetFromElement","triggerArray","isOpen","$trigger","selectors","Popper","ESCAPE_KEYCODE","SPACE_KEYCODE","TAB_KEYCODE","ARROW_UP_KEYCODE","ARROW_DOWN_KEYCODE","RIGHT_MOUSE_BUTTON_WHICH","REGEXP_KEYDOWN","RegExp","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","DISABLED","DROPUP","DROPRIGHT","DROPLEFT","MENURIGHT","MENULEFT","POSITION_STATIC","FORM_CHILD","MENU","NAVBAR_NAV","VISIBLE_ITEMS","AttachmentMap","TOP","TOPEND","BOTTOM","BOTTOMEND","RIGHTEND","LEFTEND","flip","boundary","reference","display","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","_getParentFromElement","isActive","_clearMenus","showEvent","referenceElement","_getPopperConfig","noop","hideEvent","destroy","scheduleUpdate","constructor","$parentDropdown","placement","offsets","popperConfig","_getPlacement","modifiers","_getOffset","enabled","preventOverflow","boundariesElement","applyStyle","toggles","clickEvent","dropdownMenu","_dataApiKeydownHandler","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","SCROLLABLE","SCROLLBAR_MEASURER","BACKDROP","OPEN","DIALOG","MODAL_BODY","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","htmlElement","nodeType","Node","ELEMENT_NODE","appendChild","removeAttribute","_enforceFocus","shownEvent","transitionComplete","handleUpdate","_resetAdjustments","_resetScrollbar","callback","createElement","className","backdropTransitionDuration","callbackRemove","_removeBackdrop","isModalOverflowing","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","fixedContent","stickyContent","actualPadding","calculatedPadding","parseFloat","actualMargin","marginRight","calculatedMargin","padding","elements","margin","scrollDiv","scrollbarWidth","clientWidth","removeChild","ACTIVATE","SCROLL","DROPDOWN_ITEM","DROPDOWN_MENU","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","OffsetMethod","OFFSET","POSITION","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targets","targetSelector","targetBCR","sort","a","b","getUID","pageYOffset","maxScroll","_getOffsetHeight","_activate","_clear","offsetLength","isActiveTarget","queries","$link","node","scrollSpys","scrollSpysLength","$spy","ACTIVE_UL","DROPDOWN_ACTIVE_CHILD","Tab","previous","listElement","itemSelector","nodeName","makeArray","hiddenEvent","activeElements","active","_transitionComplete","dropdownChild","dropdownElement","dropdownToggleList","MAX_UID","MILLISECONDS_MULTIPLIER","toType","obj","toLowerCase","getSpecialTransitionEndEvent","bindType","delegateType","handle","handleObj","handler","apply","arguments","transitionEndEmulator","duration","called","setTransitionEndSupport","special","prefix","random","getElementById","hrefAttr","trim","transitionDelay","floatTransitionDuration","floatTransitionDelay","supportsTransitionEnd","componentName","configTypes","property","prototype","hasOwnProperty","expectedTypes","valueType","Error","findShadowRoot","attachShadow","getRootNode","root","ShadowRoot","global","factory","w","noGlobal","arr","getProto","getPrototypeOf","flat","concat","class2type","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","doc","script","head","version","jQuery","num","pushStack","elems","ret","merge","prevObject","last","even","grep","_elem","odd","splice","extend","copy","copyIsArray","clone","deep","isPlainObject","Array","isArray","expando","isReady","proto","Ctor","isEmptyObject","globalEval","isArrayLike","results","inArray","second","invert","callbackInverse","matches","callbackExpect","arg","guid","Symbol","iterator","_i","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","list","booleans","whitespace","identifier","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","dir","childNodes","els","seed","m","nid","groups","newSelector","newContext","ownerDocument","exec","getElementsByTagName","getElementsByClassName","qsa","testContext","toSelector","cssSupportsSelector","CSS","supports","qsaError","cache","cacheLength","shift","markFunction","assert","addHandle","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","hasCompare","subWindow","defaultView","addEventListener","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","args","setFilters","matched","matcher","unmatched","lang","elemLang","hash","hasFocus","tabIndex","checked","selectedIndex","_matchIndexes","radio","checkbox","file","password","image","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","self","rootjQuery","rparentsprev","guaranteedUnique","contents","prevAll","addBack","sibling","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","createOptions","object","_","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","promise","fail","then","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","that","mightThrow","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","stack","console","warn","readyException","readyList","catch","readyWait","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","parse","dataAttr","_data","_removeData","dequeue","startLength","hooks","_queueHooks","setter","clearQueue","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","fragment","createDocumentFragment","div","checkClone","cloneNode","noCloneChecked","wrapMap","thead","col","tr","td","_default","tbody","tfoot","colgroup","caption","th","optgroup","getAll","setGlobalEval","refElements","buildFragment","scripts","selection","ignored","attached","nodes","createTextNode","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","origFn","handleObjIn","eventHandle","events","t","handlers","namespaces","origType","elemData","create","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","writable","load","noBubble","leverageNative","beforeunload","returnValue","notAsync","saved","isTrigger","stopImmediatePropagation","props","defaultPrevented","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","view","charCode","buttons","clientY","offsetX","offsetY","pointerId","screenX","screenY","targetTouches","toElement","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","insertBefore","before","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","old","rboxStyle","rtrimCSS","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","measure","round","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelBoxStyles","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","addGetHookIf","conditionFn","hookFn","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","ceil","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","origName","setProperty","isFinite","scrollboxSizeBuggy","border","suffix","expand","expanded","parts","Tween","propHooks","run","percent","eased","pos","step","fx","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","timer","tweener","prefilter","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideToggle","fadeToggle","slow","fast","delay","time","timeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","propFix","tabindex","stripAndCollapse","getClass","classesToArray","classNames","curValue","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","isSuccess","conv2","current","conv","responseFields","dataFilter","throws","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","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","calculatePosition","curElem","using","win","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNaN","define","amd","_jQuery","_$","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","toStringTag","baseGetTag","trimmedEndIndex","reTrimStart","baseTrim","freeGlobal","objectProto","nativeObjectToString","isOwn","unmasked","freeSelf","Function","reWhitespace","charAt","isObject","toNumber","FUNC_ERROR_TEXT","nativeMax","nativeMin","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","isObjectLike","symbolTag","isSymbol","NAN","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","timeoutDuration","longerTimeoutBrowsers","isBrowser","scheduled","supportsMicroTasks","getType","functionToCheck","getStyleComputedProperty","getScrollParent","getParentNode","isIE11","isIE10","noOffsetParent","isIE","getOffsetParent","getRoot","order","range","commonAncestorContainer","isOffsetContainer","element1root","findCommonOffsetParent","side","upperSide","scrollingElement","getScroll","modifier","sideA","axis","sideB","computedStyle","getSize","getWindowSizes","horizScrollbar","vertScrollbar","getBordersSize","getClientRect","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","borderLeftWidth","marginTop","includeScroll","excludeScroll","relativeOffset","getOffsetRectRelativeToArbitraryNode","isFixed","boundaries","getFixedPositionOffsetParent","getReferenceNode","getViewportOffsetRectRelativeToArtbitraryNode","boundariesNode","popper","isPaddingNumber","getBoundaries","rects","refRect","bottom","sortedAreas","getArea","filteredAreas","computedPlacement","variation","commonOffsetParent","x","y","popperRect","getOuterSizes","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","referenceOffsets","getOppositePlacement","modifiersToRun","ends","findIndex","getReferenceOffsets","computeAutoPlacement","getPopperOffsets","runModifiers","prefixes","upperProp","toCheck","isModifierEnabled","getSupportedPropertyName","isBody","passive","scrollElement","setupEventListeners","removeEventListeners","floor","noRound","referenceWidth","popperWidth","isVertical","isVariation","sameWidthParity","bothOddWidth","horizontalToInteger","verticalToInteger","isFirefox","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","requesting","isRequired","requested","isModifierRequired","arrowElement","sideCapitalized","altSide","opSide","arrowElementSize","center","popperMarginSide","popperBorderSide","sideValue","validPlacements","placements","counter","BEHAVIORS","placementOpposite","flipOrder","clockwise","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flippedVariationByContent","flippedVariation","getOppositeVariation","str","useHeight","fragments","frag","divider","splitRegex","ops","mergeWithPrevious","toValue","op","index2","basePlacement","parseOffset","transformProp","popperStyles","transform","shiftvariation","shiftOffsets","bound","subtractLength","keepTogether","inner","modifierOptions","eventsEnabled","update","enableEventListeners","disableEventListeners","Utils","PopperUtils","Defaults","S2","requirejs","undef","main","req","makeMap","defined","waiting","defining","aps","jsSuffixRegExp","hasProp","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","part","normalizedBaseParts","baseParts","starMap","nodeIdCompat","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","substring","makeRelParts","relParts","plugin","relResourceName","f","pr","makeConfig","uri","deps","cjsModule","callbackType","usingExports","cfg","_defined","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","getMethods","theClass","methodName","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","displayName","ctr","superMethod","calledMethod","originalMethod","decoratedMethod","d","Observable","listeners","_type","invoke","generateChars","chars","randomChar","_convertData","originalKey","dataLevel","k","hasScroll","scrollWidth","escapeMarkup","markup","replaceMap","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","copyNonInternalCssClasses","classes","destinationClasses","clazz","sourceClasses","replacements","Results","dataAdapter","render","$results","clear","hideLoading","$message","hideMessages","$options","$option","$dropdown","$resultsContainer","sorter","highlightFirstItem","ensureHighlightVisible","setClasses","selectedIds","showLoading","loadingMore","loading","$loading","Element","_resultId","role","template","$children","c","child","$child","$childrenContainer","$container","$highlighted","getHighlightedResults","currentIndex","nextIndex","$next","currentOffset","nextTop","nextOffset","nextBottom","mousewheel","deltaY","isAtTop","isAtBottom","offsetDelta","KEYS","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","UP","DOWN","DELETE","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","$all","$selectionContainer","isEnabled","SingleSelection","$rendered","selectionContainer","MultipleSelection","$remove","$selections","selectionIdPrefix","selectionId","removeItem","Placeholder","decorated","normalizePlaceholder","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","multipleSelections","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","documentMode","disableInputEvents","handleSearch","searchHadFocus","term","minimumWidth","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","all","translation","_cache","loadPath","translations","diacritics","BaseAdapter","query","generateResultId","SelectAdapter","selectedElement","currentData","unselect","addOptions","innerText","normalizedData","_normalizeItem","defaults","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","failure","$request","_request","request","_queryTimeout","Tags","tags","createTag","insertTag","_removeOldTags","wrapper","checkChildren","optionText","paramsTerm","checkText","Tokenizer","tokenizer","dropdown","createAndSelect","$existingOptions","tokenData","separators","termChar","substr","partParams","MinimumInputLength","$e","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","loadingMoreOffset","loadMore","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","viewport","enoughRoomAbove","enoughRoomBelow","$offsetParent","isConnected","outerWidth","countResults","MinimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","remainingChars","maximumSelected","noResults","searching","removeAllItems","search","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","language","_resolveLanguage","uniqueLanguages","_processTranslations","stripDiacritics","amdLanguageBase","autocomplete","dropdownAutoWidth","scrollAfterSelect","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","resolvedLanguages","languageParts","baseLanguage","languageData","camelKey","convertedData","Options","fromElement","excludedData","upperCaseLetter","attributeName","dataName","dataValue","camelDataName","Select2","_generateId","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","_isChangeMutation","addedNodes","removedNodes","some","mutation","changed","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","enable","newVal","disconnect","thisMethods","instanceOptions","instance","touchstart","ns","includes","touchmove","Slick","instanceUid","dataSettings","slider","focusOnChange","pauseOnFocus","rtl","useTransform","initials","animating","dragging","autoPlayTimer","currentDirection","currentLeft","currentSlide","$dots","listWidth","listHeight","loadIndex","$nextArrow","$prevArrow","scrolling","slideCount","slideWidth","$slideTrack","sliding","slideOffset","swipeLeft","swiping","$list","touchObject","transformsEnabled","unslicked","activeBreakpoint","animType","animProp","breakpointSettings","cssTransitions","focussed","interrupted","paused","positionProp","rowCount","shouldClick","$slider","$slidesCache","transformType","transitionType","visibilityChange","windowWidth","windowTimer","mozHidden","webkitHidden","autoPlay","autoPlayClear","autoPlayIterator","changeSlide","clickHandler","selectHandler","setPosition","swipeHandler","dragHandler","keyHandler","htmlExpr","registerBreakpoints","activateADA","addSlide","slickAdd","addBefore","unload","reinit","animateHeight","targetHeight","animateSlide","targetLeft","animProps","animStart","applyTransition","disableTransition","getNavTarget","slideHandler","slideTo","buildArrows","buildDots","dot","getDotCount","buildOut","setupInfinite","updateDots","setSlideClasses","buildRows","newSlides","numOfSlides","originalSlides","slidesPerSection","row","checkResponsive","forceUpdate","targetBreakpoint","respondToWidth","triggerBreakpoint","sliderWidth","unslick","dontAnimate","indexOffset","unevenOffset","checkNavigable","navigables","prevNavigable","getNavigableIndexes","cleanUpEvents","interrupt","cleanUpSlideEvents","orientationChange","resize","cleanUpRows","fadeSlide","fadeSlideOut","filterSlides","slickFilter","focusHandler","$sf","getCurrent","slickCurrentSlide","breakPoint","pagerQty","getLeft","verticalHeight","verticalOffset","targetSlide","coef","offsetLeft","getOption","slickGetOption","indexes","getSlick","getSlideCount","slidesTraversed","swipedSlide","swipeTarget","centerOffset","slideOuterWidth","slideRightBoundary","goTo","slickGoTo","creation","setProps","startLoad","loadSlider","initializeEvents","updateArrows","initADA","numDotGroups","tabControlIndexes","slideControlIndex","ariaButtonControl","mappedSlideIndex","initArrowEvents","initDotEvents","initSlideEvents","initUI","loadRange","cloneRange","rangeStart","rangeEnd","loadImages","imagesScope","imageSource","imageSrcSet","imageSizes","imageToLoad","prevSlide","nextSlide","progressiveLazyLoad","slickNext","slickPause","play","slickPlay","postSlide","$currentSlide","slickPrev","tryCount","$imgsToLoad","initializing","lastVisibleIndex","currentBreakpoint","responsiveSettings","windowDelay","removeSlide","slickRemove","removeBefore","setCSS","positionProps","setDimensions","setFade","setHeight","setOption","slickSetOption","bodyStyle","WebkitTransition","MozTransition","msTransition","OTransform","perspectiveProperty","webkitPerspective","MozTransform","MozPerspective","webkitTransform","msTransform","allSlides","remainder","evenCoef","infiniteCount","targetElement","sync","animSlide","oldSlide","slideLeft","navTarget","swipeDirection","xDist","yDist","r","swipeAngle","startX","curX","startY","curY","atan2","swipeEnd","swipeLength","edgeHit","minSwipe","fingerCount","swipeStart","swipeMove","edgeWasHit","positionOffset","verticalSwipeLength","sqrt","pow","unfilterSlides","slickUnfilter","fromBreakpoint","listener","toastId","toastType","getContainer","subscribe","previousToast","optionsOverride","iconClass","containerId","createContainer","$toastElement","clearOptions","clearToast","clearContainer","removeToast","toastsToClear","force","getDefaults","onHidden","closeMethod","closeDuration","closeEasing","closeOnHover","escapeHtml","progressClass","publish","shouldExit","intervalId","$titleElement","$messageElement","$progressElement","$closeElement","hideEta","maxHideTime","personalizeToast","displayToast","handleEvents","log","setIcon","setTitle","setMessage","setCloseButton","setProgressBar","setRTL","setSequence","setAria","ariaValue","stickAround","delayedHideToast","hideToast","cancelBubble","onCloseClick","getTime","updateProgress","override","endTime","percentage","USE_NON_GEOGRAPHIC_COUNTRY_CODE","Metadata","defaultCountry","defaultCallingCode","optionsOrDefaultCountry","digits","justLeadingPlus","formattedNationalNumber","nationalDigits","AsYouTypeState","onCountryChange","onCallingCodeChange","AsYouTypeFormatter","metadata","AsYouTypeParser","onNationalSignificantNumberChange","callingCode","spacing","nationalSignificantNumber","complexPrefixBeforeNationalSignificantNumber","nationalPrefix","nationalSignificantNumberMatchesInput","DIGIT_PLACEHOLDER","countryCodes","callingCode_","carrierCode","phoneNumber","PhoneNumber","PatternMatcher","PatternParser","allowOverflow","characterString","characters","tree","matchedChars","partialMatch","restCharacters","branch","char","or","instructions","branches","expandSingleElementArray","ILLEGAL_CHARACTER_REGEXP","rightPart","oneOfSet","parseOneOfSet","prevValue","nextValue","OPERATOR","shouldTryNationalPrefixFormattingRule","getSeparatorAfterNationalPrefix","formatNationalNumberWithAndWithoutNationalPrefixFormattingRule","international","formattedNumber","formatNationalNumber","useNationalPrefixFormattingRule","useInternationalFormat","withNationalPrefix","isValidFormattedNationalNumber","DUMMY_DIGIT","LONGEST_NATIONAL_PHONE_NUMBER_LENGTH","LONGEST_DUMMY_PHONE_NUMBER","NATIONAL_PREFIX_SEPARATORS_PATTERN","SUPPORT_LEGACY_FORMATTING_PATTERNS","CREATE_CHARACTER_CLASS_PATTERN","CREATE_STANDALONE_DIGIT_PATTERN","NON_ALTERING_FORMAT_REG_EXP","VALID_PUNCTUATION","MIN_LEADING_DIGITS_LENGTH","numberingPlan","formattedCompleteNumber","previouslyChosenFormat","newlyChosenFormat","leadingDigits","leadingDigitsPatternIndex","leadingDigitsPatternsCount","leadingDigitsPattern","IDDPrefix","missingPlus","internationalPrefix","strictPattern","nationalNumberDummyDigits","numberFormat","numberFormatWithNationalPrefix","FIRST_GROUP_PATTERN","nationalPrefixIncludedInTemplate","usesNationalPrefix","DIGIT_PLACEHOLDER_MATCHER","character","times","cutBeforeIndex","stripNonPairedParens","retained_template","opening_braces","countOccurences","closing_braces","dangling_braces","cut_before","cleared_string","digit","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART","VALID_DIGITS","VALID_FORMATTED_PHONE_NUMBER_DIGITS_PART_PATTERN","VALID_FORMATTED_PHONE_NUMBER_PART","PLUS_CHARS","AFTER_PHONE_NUMBER_DIGITS_END_PATTERN","COMPLEX_NATIONAL_PREFIX","formattedDigits","hasPlus","extractFormattedDigitsAndPlus","hasReceivedThreeLeadingDigits","nextDigits","countryCallingCode","nationalPrefixForParsing","nationalNumber","nationalSignificantNumberIndex","prefixBeforeNationalNumber","setState","numberWithoutIDD","newCallingCode","startsAt","extractedNumber","extractFormattedPhoneNumber","_extractFormattedDigitsAndPlus","ParseError","getCountryAndCountryCallingCode","v2","isCountryCode","EXTN_PATTERNS_FOR_MATCHING","INNER_MATCHES","pZ","PZ","leadLimit","punctuationLimit","digitBlockLimit","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","blockLimit","punctuation","digitSequence","pNd","PATTERN","LEAD_CLASS","UNWANTED_END_CHAR_PATTERN","_pN","_pL","NON_DIGITS_PATTERN","MAX_SAFE_INTEGER","Number","PhoneNumberMatcher","leniency","maxTries","Leniency","RegExpCache","candidate","endsAt","phone","innerMatchPattern","isFirstMatch","candidateMatch","innerMatchRegExp","candidateIndexGuess","extended","MIN_LENGTH_FOR_NSN","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","LRUCache","limit","POSSIBLE","VALID","containsOnlyValidXChars","STRICT_GROUPING","containsMoreThanOneSlashInNationalNumber","isNationalPrefixPresentIfRequired","checkNumberGroupingIsValid","EXACT_GROUPING","charAtIndex","charAtNextIndex","ext","phoneNumberRegion","firstSlashInBodyIndex","secondSlashInBodyIndex","candidateHasCountryCode","normalizedCandidate","normalizeDigits","formattedNumberGroups","getNationalNumberGroups","checkGroups","alternateFormats","MetadataManager","util","alternateFormat","leadingDigitsRegExp","regExpCache","rfc3966Format","formatNumber","endIndex","startIndex","candidateGroups","candidateNumberGroupIndex","formattedNumberGroupIndex","CountryCodeSource","countryCode","region","Character","regExp","OPENING_PARENS","CLOSING_PARENS","NON_PARENS","LEAD_CLASS_LEADING","BRACKET_PAIR_LIMIT","MATCHING_BRACKETS_ENTIRE","PUB_PAGES","previousChar","lastCharIndex","nextChar","SLASH_SEPARATED_DATES","TIME_STAMPS","TIME_STAMPS_SUFFIX_LEADING","followingText","phoneNumberStringContainsCallingCode","parsedPhoneNumber","SECOND_NUMBER_START_PATTERN","_pZ","_pNd","pL","pL_regexp","_pSc","pSc","pSc_regexp","_pMn","pMn","pMn_regexp","_InBasic_Latin","_InLatin_1_Supplement","_InLatin_Extended_A","_InLatin_Extended_Additional","_InLatin_Extended_B","_InCombining_Diacritical_Marks","latinLetterRegexp","lower","upper","DEFAULT_OPTIONS","formatExtension","addExtension","formatIDD","chooseFormatForNumber","formatAs","lastLeadingDigitsPattern","nationalNnumber","fromCountryCallingCode","iddPrefix","checkNumberLengthForType","type_info","possible_lengths","mobile_type","actual_length","minimum_length","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn","EXTN_PATTERN","numberWithoutExtension","isNumberWithIddPrefix","shorterNumber","countryCallingCodeSource","possibleShorterNumber","possibleShorterNationalNumber","phoneContext","phoneNumberString","PLUS_SIGN","indexOfRfc3966Prefix","numberToParse","RFC3966_PREFIX_","indexOfNationalNumber","indexOfPhoneContext","RFC3966_PHONE_CONTEXT_","indexOfIsdn","RFC3966_ISDN_SUBADDRESS_","shouldHaveExtractedNationalPrefix","isPossibleIncompleteNationalNumber","prefixPattern","prefixMatch","capturedGroupsCount","hasCapturedGroups","possiblePositionOfTheFirstCapturedGroup","possibleNationalPrefix","RFC3966_VISUAL_SEPARATOR_","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","ALPHANUM_","RFC3966_DOMAINLABEL_","VALID_ALPHA_","RFC3966_TOPLABEL_","RFC3966_DOMAINNAME_","RFC3966_DOMAINNAME_PATTERN_","numberToExtractFrom","phoneContextStart","phoneContextEnd","possibleCountries","nationalPhoneNumber","SINGLE_IDD_PREFIX_REG_EXP","countryMetadata","NON_FIXED_LINE_PHONE_TYPES","isNumberTypeEqualTo","_metadata","couldNationalNumberBelongToCountry","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","VALID_PHONE_NUMBER_PATTERN","merged","DIGITS","parseDigit","CAPTURING_DIGIT_PATTERN","IDDPrefixPattern","matchedGroups","isPossibleNumber","extract","EXTN_PATTERNS_FOR_PARSING","WHITESPACE_IN_THE_BEGINNING_PATTERN","PUNCTUATION_IN_THE_END_PATTERN","VALID_PRECEDING_CHARACTER_PATTERN","phones","PhoneNumberSearch","normalizeArguments","arg_1","arg_2","arg_3","arg_4","arg_5","is_object","V2","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","validateMetadata","setVersion","NumberingPlan","globalMetadataObject","formats","Format","FIRST_GROUP_ONLY_PREFIX_PATTERN","Type","type_of","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","formattedPhoneNumber","parseInput","possible","withExtensionStripped","exactCountry","parsePhoneNumberCharacter","pa","pb","na","nb","ssrDocument","createEvent","initEvent","createElementNS","importNode","hostname","origin","getDocument","ssrWindow","userAgent","pushState","go","back","CustomEvent","Image","screen","cancelAnimationFrame","getWindow","paramsList","updateSwiper","swiper","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","scrollbar","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","mod","newValue","initialized","shadowEl","updateSize","setTranslate","allowSlideNext","allowSlidePrev","changeDirection","loopDestroy","loopCreate","o","noExtend","__swiper__","needsNavigation","needsPagination","needsScrollbar","uniqueClasses","attrToProp","attrName","wrapperClass","getBreakpoint","containerEl","currentHeight","points","point","minRatio","setBreakpoint","isGridEnabled","grid","realIndex","breakpointsBase","breakpointOnlyParams","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","containerModifierClass","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","directionChanged","needsReLoop","assign","emit","updateSlides","checkOverflow","wasLocked","isLocked","slidesOffsetBefore","lastSlideIndex","lastSlideRightEdge","slidesGrid","slidesSizesGrid","snapGrid","isEnd","prepareClasses","entries","resultClasses","addClasses","device","suffixes","freeMode","autoHeight","android","ios","cssMode","centeredSlides","watchSlidesProgress","removeClasses","deleteProps","elementChildren","elementStyle","elementIndex","getSupport","getDevice","getBrowser","Resize","Observer","eventsEmitter","translate","grabCursor","moduleExtendParams","processLazyPreloader","prototypes","extendedDefaults","swipers","newParams","browser","eventsListeners","eventsAnyListeners","modules","__modules__","allModulesParams","extendParams","swiperParams","eventName","onAny","isHorizontal","isBeginning","previousTranslate","velocity","touchEventsData","isTouched","isMoved","allowTouchCallbacks","touchStartTime","isScrolling","currentTranslate","startTranslate","allowThresholdMove","focusableElements","lastClickTime","clickTimeout","velocities","allowMomentumBounce","startMoving","evCache","allowClick","currentX","currentY","imagesToLoad","imagesLoaded","slideEl","slidesEl","slideClass","firstSlideIndex","setGrabCursor","unsetGrabCursor","minTranslate","maxTranslate","translateTo","updateActiveIndex","updateSlidesClasses","_emitClasses","cls","destroyed","updates","getSlideClasses","exact","swiperSize","spv","slideSize","swiperSlideSize","breakLoop","slideInView","imageEl","translateValue","rtlTranslate","newTranslate","translated","updateAutoHeight","watchOverflow","needUpdate","mounted","getWrapperSelector","getWrapper","shadowRoot","wrapperEl","createElements","wrongRTL","mount","slidesBefore","runCallbacksOnInit","attachEvents","deleteInstance","cleanStyles","detachEvents","slideVisibleClass","slideActiveClass","slideNextClass","slidePrevClass","newDefaults","installModule","prototypeGroup","protoMethod","use","oneWayMovement","touchEventsTarget","updateOnWindowResize","resizeObserver","nested","preventInteractionOnTransition","edgeSwipeDetection","edgeSwipeThreshold","setWrapperSize","virtualTranslate","effect","spaceBetween","slidesPerGroup","slidesPerGroupSkip","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","touchRatio","touchAngle","simulateTouch","shortSwipes","longSwipes","longSwipesRatio","longSwipesMs","followFinger","threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","resistance","resistanceRatio","preventClicks","preventClicksPropagation","slideToClickedSlide","loopedSlides","loopPreventsSliding","rewind","noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","maxBackfaceHiddenSlides","lazyPreloaderClass","priority","onceHandler","__emitterProxy","offAny","eventHandler","eventsArray","onTouchStart","onTouchMove","onTouchEnd","onResize","onClick","onScroll","onLoad","dummyEventAttached","dummyEventListener","capture","domMethod","swiperMethod","isVirtual","isVirtualLoop","slideToLoop","running","resume","newProgress","translatesDiff","nextTick","pointerIndex","cachedEv","proceed","isSafari","isWebView","touchEndTime","timeDiff","pathTree","composedPath","updateClickedSlide","currentPos","stopIndex","groupSize","increment","rewindFirstIndex","rewindLastIndex","ratio","isNavButtonTarget","targetTouch","preventedByNestedSwiper","prevX","prevY","diffX","diffY","zoom","touchesDiff","previousX","previousY","prevTouchesDirection","touchesDirection","isLoop","loopFix","getTranslate","setTransition","dispatchEvent","loopFixed","disableParentSwiper","activeSlideIndex","slidesPerViewDynamic","closestElement","__closestFrom","assignedSlot","found","targetEl","swipingClassHasValue","isTargetShadow","iOSEdgeSwipeDetection","iOSEdgeSwipeThreshold","shouldPreventDefault","isContentEditable","moving","__preventObserver__","cursor","slideRealIndex","recalcSlides","newSlidesOrder","swiperSlideIndex","byController","byMousewheel","snapIndex","prependSlidesIndexes","appendSlidesIndexes","getSlideIndex","isNext","isPrev","slidesPrepended","slidesAppended","updateSlidesOffset","currentSlideTranslate","newSlideTranslate","loopParams","moduleParamName","moduleParams","auto","elementParents","observers","attach","ObserverFunc","WebkitMutationObserver","observer","observerUpdate","characterData","observeParents","containerParents","observeSlideChildren","animationFrame","resizeHandler","createObserver","ResizeObserver","newWidth","newHeight","contentBoxSize","contentRect","inlineSize","blockSize","removeObserver","unobserve","orientationChangeHandler","slideNext","slidePrev","slideReset","slideToClosest","runCallbacks","internal","perGroup","_clientLeft","clientLeft","normalizedTranslate","normalizedSnapGrid","prevSnap","prevSnapIndex","snap","prevIndex","animateCSSModeScroll","previousIndex","normalizedGrid","normalizedGridNext","transitionStart","transitionEnd","isH","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","smoothScroll","targetPosition","onSlideToWrapperTransitionEnd","slideToIndex","clickedIndex","slideSelector","clickedSlide","currentSnap","nextSnap","indexAsNumber","newIndex","transitionEmit","getSwiperTranslate","z","translateBounds","onTranslateToWrapperTransitionEnd","updateSlidesProgress","getActiveIndexByTranslate","newActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","activeSlides","getSlideByIndex","visibleSlides","slideFound","multiplier","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","elementOuterSize","setCSSProperty","getDirectionLabel","getDirectionPropertyValue","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginBottom","gridEnabled","initSlides","shouldResetSlideSize","updateSlide","slideStyles","currentTransform","currentWebKitTransform","boxSizing","updateWrapperSize","newSlidesGrid","slidesGridItem","slidesAfter","allSlidesSize","slideSizeValue","maxSnap","allSlidesOffset","addToSnapGrid","addToSlidesGrid","backFaceHiddenClass","hasClassBackfaceClassAdded","elementNextAll","elementPrevAll","getFilteredSlide","activeSlide","emitSlidesClasses","minusOffset","offsetTop","swiperSlideOffset","offsetCenter","visibleSlidesIndexes","slideProgress","originalSlideProgress","slideBefore","slideAfter","isVisible","originalProgress","formatValue","modulesParamsList","getParams","localParamsList","allowedParams","paramName","moduleParam","mParam","parentObjName","subObjName","SwiperFontCSS","SwiperCSS","globalInjectStyles","addGlobalStyles","preInit","globalStyles","shouldOverwrite","cssLinks","linkEl","rel","cssStyles","DummyHTMLElement","ClassToExtend","HTMLElement","SwiperContainer","tempDiv","mode","injectStyles","injectStylesUrls","localStyles","stylesEl","linkExists","initialize","propName","updateSwiperOnPropChange","SwiperSlide","lazy","lazyDiv","register","customElements","SwiperElementRegisterParams","classesToSelector","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","clicked","liveRegion","notification","makeElementsArray","getRandomNumber","repeat","makeElFocusable","subEl","makeElNotFocusable","addElRole","addElRoleDescription","description","addElControls","controls","addElLabel","addElId","addElLive","live","disableEl","enableEl","onEnterOrSpaceKey","bulletClass","updateNavigation","hasPagination","bullets","hasClickablePagination","updatePagination","bulletEl","renderBullet","bulletActiveClass","initNavEl","wrapperId","handlePointerDown","handlePointerUp","handleFocus","sourceCapabilities","firesTouchEvents","ariaLabelMessage","Autoplay","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","raf","autoplayDelayTotal","autoplayDelayCurrent","autoplayTimeLeft","autoplayStartTime","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","onTransitionEnd","calcTimeLeft","getSlideDelay","activeSlideEl","currentSlideDelay","delayForce","onVisibilityChange","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","_s","elementTransitionEnd","Controller","inverse","by","LinearSpline","binarySearch","maxIndex","minIndex","guess","i1","i3","interpolate","x2","getInterpolateFunction","spline","_t","controlled","controlledTranslate","setControlledTranslate","setControlledTransition","removeSpline","controlElement","onControllerSwiper","createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","scaleString","transformElements","perspective","overwriteParams","EffectCoverflow","coverflowEffect","stretch","swiperWidth","swiperHeight","offsetMultiplier","rotateY","rotateX","translateZ","translateY","translateX","slideTransform","shadowBeforeEl","shadowAfterEl","EffectCreative","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","custom","translateString","rotateString","opacityString","shadow","shadowOpacity","transformOrigin","EffectCube","cubeEffect","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","recreateShadows","wrapperRotate","cubeShadowEl","slideAngle","tx","ty","tz","shadowAngle","sin","scale1","scale2","zFactor","needPerspectiveFix","getEffectParams","EffectFade","fadeEffect","crossFade","slideOpacity","EffectFlip","flipEffect","limitRotation","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","lastMoveEvent","velocityEvent","distance","momentumDuration","momentumDistance","newPosition","doBounce","afterBouncePosition","bounceAmount","needsLoopFix","moveDistance","currentSlideSize","Grid","slidesNumberEvenToRows","numFullColumns","newSlideOrderIndex","column","groupIndex","slideIndexInGroup","columnsInGroup","HashNavigation","hashNavigation","watchState","onHashChange","newHash","activeSlideHash","setHash","slideHash","History","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","total","setHistory","currentState","scrollToSlide","slideHistory","setHistoryPopState","elementOffset","Keyboard","onlyInViewport","pageUpDown","kc","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","inView","windowHeight","swiperOffset","swiperCoord","appendSlide","prependSlide","removeAllSlides","Manipulation","activeIndexBuffer","baseLength","slidesBuffer","appendElement","tempDOM","prependElement","slidesIndexes","indexToRemove","Mousewheel","releaseOnEdges","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","lastScrollTime","lastEventBeforeSnap","recentWheelEvents","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","releaseScroll","targetElContainsTarget","rtlFactor","positions","sign","prevEvent","ignoreWheelEvents","firstEvent","snapToThreshold","autoplayDisableOnInteraction","createElementIfNotDefined","Navigation","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","getEl","toggleEl","onPrevClick","onNextClick","initButton","destroyButton","isHidden","Pagination","pfx","bulletElement","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","formatFractionCurrent","formatFractionTotal","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bulletSize","dynamicBulletIndex","isPaginationDisabled","setSideBullets","onBulletClick","firstIndex","midIndex","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","totalEl","progressbarDirection","scaleX","scaleY","progressEl","paginationHTML","numberOfBullets","Parallax","parallax","setTransform","currentOpacity","currentScale","currentRotate","parallaxEl","parallaxDuration","_swiper","Scrollbar","dragTimeout","dragStartPos","dragSize","trackSize","snapOnRelease","dragClass","scrollbarDisabledClass","dragEl","newSize","newPos","getPointerPosition","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","activeListener","passiveListener","eventMethod","enableDraggable","disableDraggable","swiperEl","Thumb","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","Virtual","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","cssModeTimeout","previousFrom","previousTo","previousSlidesGrid","previousOffset","onRendered","getSlides","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","numberOfNewSlides","cachedIndex","cachedEl","cachedElIndex","domSlidesAssigned","Zoom","maxRatio","containerClass","zoomedSlideClass","isScaling","fakeGestureTouched","fakeGestureMoved","gesture","slideHeight","imageWrapEl","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","getDistanceBetweenTouches","x1","y1","y2","getScaleOrigin","getSlideSelector","eventWithinSlide","eventWithinZoomContainer","onGestureStart","scaleStart","originX","originY","onGestureChange","scaleMove","onGestureEnd","scaledWidth","scaledHeight","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","zoomIn","touchAction","touchX","touchY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","scrollX","scrollY","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","in","out","checkProps","shadowClass","shadowContainer","overwriteParamsResult","requireUpdateOnVirtual","effectParams","transformEl","backfaceVisibility","getSlide","parentElement","eventTriggered","transitionEndTarget","calcBrowser","ua","major","minor","deviceCached","calcDevice","platform","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","iPadScreens","os","overrides","calcSupport","DocumentTouch","lazyEl","currentStyle","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","MsTransform","m41","m42","isNode","nextSource","keysArray","nextKey","desc","getOwnPropertyDescriptor","varName","varValue","startPosition","cssModeFrameID","isOutOfBound","easeProgress","currentPosition","findElementsInElements","clientTop","prevEls","previousElementSibling","nextEls","nextElementSibling","previousSibling","fireCallBack","includeMargins","default","Thumbs","FreeMode","processInclude","URLSearchParams","toastParamUrl","toastMessage","toastMessageRemoved","isPaymentError"],"sourceRoot":""}