{"version":3,"file":"5a14b2ba-354543b926aa7a3a5396.js","mappings":"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","sources":["webpack://2po-dgp-front-channel/./node_modules/@2po-dgp/dgp-ai-search-component/dist/dgp-ai-search-component.esm.js"],"sourcesContent":["import { faExternalLinkAlt, faFileAlt, faLink, faArrowRight, faArrowLeft, faSearch, faExclamationCircle, faStar } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useState, useRef, useLayoutEffect, useEffect, useMemo } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nconst ResultLineLink = styled.a `\n text-decoration: none;\n display: flex;\n height: 100%;\n width: 100%;\n`;\nconst Link = ({ href, children, target, rel, LinkComponent }) => {\n if (LinkComponent) {\n return (React.createElement(React.Fragment, null,\n React.createElement(LinkComponent, { href: href, target: target, rel: rel }, children)));\n }\n return (React.createElement(ResultLineLink, { href: href, target: target, rel: rel },\n React.createElement(React.Fragment, null, children)));\n};\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\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\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 objectToString = objectProto.toString;\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 * 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\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$1(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 result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\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 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\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$1(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\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 && typeof value == 'object';\n}\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) && objectToString.call(value) == symbolTag);\n}\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$1(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject$1(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\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\nvar lodash_debounce = debounce;\n\nvar debounce$1 = /*@__PURE__*/getDefaultExportFromCjs(lodash_debounce);\n\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\nvar IS_SERVER2 = typeof window === \"undefined\";\nfunction useMediaQuery(query, {\n defaultValue = false,\n initializeWithValue = true\n} = {}) {\n const getMatches = (query2) => {\n if (IS_SERVER2) {\n return defaultValue;\n }\n return window.matchMedia(query2).matches;\n };\n const [matches, setMatches] = useState(() => {\n if (initializeWithValue) {\n return getMatches(query);\n }\n return defaultValue;\n });\n function handleChange() {\n setMatches(getMatches(query));\n }\n useIsomorphicLayoutEffect(() => {\n const matchMedia = window.matchMedia(query);\n handleChange();\n if (matchMedia.addListener) {\n matchMedia.addListener(handleChange);\n } else {\n matchMedia.addEventListener(\"change\", handleChange);\n }\n return () => {\n if (matchMedia.removeListener) {\n matchMedia.removeListener(handleChange);\n } else {\n matchMedia.removeEventListener(\"change\", handleChange);\n }\n };\n }, [query]);\n return matches;\n}\nfunction useUnmount(func) {\n const funcRef = useRef(func);\n funcRef.current = func;\n useEffect(\n () => () => {\n funcRef.current();\n },\n []\n );\n}\n\n// src/useDebounceCallback/useDebounceCallback.ts\nfunction useDebounceCallback(func, delay = 500, options) {\n const debouncedFunc = useRef();\n useUnmount(() => {\n if (debouncedFunc.current) {\n debouncedFunc.current.cancel();\n }\n });\n const debounced = useMemo(() => {\n const debouncedFuncInstance = debounce$1(func, delay, options);\n const wrappedFunc = (...args) => {\n return debouncedFuncInstance(...args);\n };\n wrappedFunc.cancel = () => {\n debouncedFuncInstance.cancel();\n };\n wrappedFunc.isPending = () => {\n return !!debouncedFunc.current;\n };\n wrappedFunc.flush = () => {\n return debouncedFuncInstance.flush();\n };\n return wrappedFunc;\n }, [func, delay, options]);\n useEffect(() => {\n debouncedFunc.current = debounce$1(func, delay, options);\n }, [func, delay, options]);\n return debounced;\n}\nfunction useDebounceValue(initialValue, delay, options) {\n const eq = ((left, right) => left === right);\n const unwrappedInitialValue = initialValue instanceof Function ? initialValue() : initialValue;\n const [debouncedValue, setDebouncedValue] = useState(unwrappedInitialValue);\n const previousValueRef = useRef(unwrappedInitialValue);\n const updateDebouncedValue = useDebounceCallback(\n setDebouncedValue,\n delay,\n options\n );\n if (!eq(previousValueRef.current, unwrappedInitialValue)) {\n updateDebouncedValue(unwrappedInitialValue);\n previousValueRef.current = unwrappedInitialValue;\n }\n return [debouncedValue, updateDebouncedValue];\n}\n\nconst ResultLineContainer$1 = styled.div `\n padding: 1rem 0rem;\n color: #123269;\n`;\nconst ResultLineLinkContainer = styled.span `\n color: #123269;\n text-decoration: none;\n display: flex;\n gap: 1rem;\n align-content: center;\n justify-content: center;\n width: 100%;\n`;\nconst ResultText$1 = styled.div `\n width: 100%;\n`;\nconst ResultIcon$1 = styled.div `\n align-self: center;\n`;\nconst ResultPrefixIcon = styled.div `\n align-self: center;\n width: 2rem;\n`;\nconst ResultLine = ({ variant, result, selected, platform, LinkComponent, searchUrl }) => {\n const documentIconMapping = {\n page: faFileAlt,\n blog: faLink,\n };\n const iconMapping = {\n suggestion: faArrowRight,\n result: faExternalLinkAlt,\n };\n const getIconByVariant = (variant) => {\n return iconMapping[variant];\n };\n const getDocumentIconByType = (type) => {\n return documentIconMapping[type] ?? faExternalLinkAlt;\n };\n const isMobile = useMediaQuery('screen and (max-width: 600px');\n return (React.createElement(ResultLineContainer$1, { style: { backgroundColor: selected ? 'rgba(0,0,0, 0.1)' : '' } },\n React.createElement(Link, { href: searchUrl ? searchUrl + result : result?.document?.location, target: result?.document?.availableOnPlatforms?.some((item) => platform?.includes(item)) ? '_self' : '_blank', LinkComponent: LinkComponent },\n React.createElement(ResultLineLinkContainer, null,\n variant === 'result' && (React.createElement(ResultPrefixIcon, null,\n React.createElement(FontAwesomeIcon, { icon: getDocumentIconByType(result?.document?.type) }))),\n React.createElement(ResultText$1, null, typeof result === 'string' ? result : result?.document?.title ?? ''),\n (!isMobile || (isMobile && variant !== 'result')) && (React.createElement(ResultIcon$1, null,\n React.createElement(FontAwesomeIcon, { icon: getIconByVariant(variant) })))))));\n};\n\nconst pulse = keyframes `\n from {\n background-color: #f0f0f0;\n }\n to {\n background-color: #CDCDCD;\n }\n`;\nconst SkeletonStyle = styled.div `\n height: 1rem;\n width: 10rem;\n max-width: 90%;\n border-radius: 0.5rem;\n animation-name: ${pulse};\n animation-duration: 0.6s;\n animation-direction: alternate;\n animation-iteration-count: infinite;\n`;\nconst SkeletonLargeStyle = styled.div `\n height: 1rem;\n width: 14rem;\n max-width: 100%;\n background-color: #f0f0f0;\n border-radius: 0.5rem;\n animation-name: ${pulse};\n animation-duration: 0.6s;\n animation-delay: 0.2s;\n animation-direction: alternate;\n animation-iteration-count: infinite;\n`;\nconst Skeleton = ({}) => {\n return (React.createElement(React.Fragment, null,\n React.createElement(SkeletonStyle, null),\n React.createElement(SkeletonLargeStyle, null),\n React.createElement(SkeletonStyle, null)));\n};\n\nconst SearchResultsContainer = styled.div `\n background-color: #ffffff;\n top: 100%;\n position: absolute;\n left: 0;\n right: 0;\n padding: 1rem;\n border-top: 1px solid #e0e0e0;\n z-index: 99;\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n display: flex;\n flex-direction: column;\n gap: 1rem;\n height: calc(100vh - 5.5rem);\n overflow: auto;\n padding-bottom: 1rem;\n\n @media (min-width: 600px) {\n margin-top: -3px;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n height: auto;\n max-height: calc(100vh - 7.5rem);\n }\n`;\nconst SearchResultScrollContainer = styled.div `\n &:focus {\n outline: none;\n }\n`;\nconst SearchResultHeaders = styled.h4 `\n color: #6d83a4;\n font-size: 0.875rem;\n font-weight: normal;\n text-transform: uppercase;\n letter-spacing: 1.8;\n word-wrap: 'break-word';\n margin-top: 0;\n margin-bottom: 0;\n`;\nconst ResultsContainer = styled.div `\n margin-top: 1rem;\n`;\nconst SearchResults = ({ suggestions, searchResults, suggestionsLoading, resultsLoading, translations, platform, LinkComponent, searchUrl, }) => {\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const shortenedItems = searchResults?.slice(0, 5);\n const mapOfAllItems = [...(suggestions ?? []), ...(shortenedItems ?? [])];\n const getIndexOfAllItems = (item) => {\n return mapOfAllItems.indexOf(item);\n };\n const handleKeyDown = (e) => {\n const { key } = e;\n let nextCount = 0;\n if (key === 'ArrowDown') {\n nextCount = (focusedIndex + 1) % mapOfAllItems?.length;\n }\n if (key === 'ArrowUp') {\n nextCount = (focusedIndex + mapOfAllItems.length - 1) % mapOfAllItems?.length;\n }\n if (key === 'Enter') {\n e.preventDefault();\n }\n setFocusedIndex(nextCount);\n };\n const showSuggestions = !suggestionsLoading && suggestions?.length && suggestions?.length > 0;\n return (React.createElement(SearchResultsContainer, null, resultsLoading && suggestionsLoading ? (React.createElement(Skeleton, null)) : (React.createElement(SearchResultScrollContainer, { tabIndex: 0, onKeyDown: handleKeyDown },\n React.createElement(ResultsContainer, null, showSuggestions && (React.createElement(React.Fragment, null,\n React.createElement(SearchResultHeaders, null, translations?.chapters?.suggestions ?? 'suggestions'),\n suggestions?.map((suggestion) => (React.createElement(ResultLine, { key: getIndexOfAllItems(suggestion), variant: \"suggestion\", result: suggestion, selected: getIndexOfAllItems(suggestion) === focusedIndex, platform: platform, LinkComponent: LinkComponent, searchUrl: searchUrl })))))),\n React.createElement(ResultsContainer, null,\n React.createElement(SearchResultHeaders, null, translations?.chapters?.results ?? 'other'),\n shortenedItems?.map((searchResult) => (React.createElement(ResultLine, { key: mapOfAllItems.indexOf(searchResult), variant: \"result\", result: searchResult, selected: getIndexOfAllItems(searchResult) === focusedIndex, platform: platform, LinkComponent: LinkComponent }))))))));\n};\n\nconst pushToDataLayer = (eventName, searchTerm) => {\n if (typeof window !== 'undefined' && window.dataLayer) {\n window.dataLayer.push({\n event: eventName,\n searchTerm: searchTerm,\n timestamp: new Date().toISOString()\n });\n }\n};\n\nconst InputContainer$1 = styled.div `\n display: flex;\n align-items: center;\n background-color: #ffffff;\n padding: 1rem;\n border-radius: 3px;\n gap: 1rem;\n border-bottom: 1px #dddddd solid;\n font-family: Roboto, DGP, sans-serif;\n\n @media (min-width: 600px) {\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n border-bottom: none;\n }\n`;\nconst InputIcon = styled.div `\n width: 1.25rem;\n height: 1.25rem;\n left: 0;\n position: absolute;\n cursor: pointer;\n color: #123269;\n\n @media (min-width: 600px) {\n cursor: default;\n }\n`;\nconst Input = styled.input `\n border: none;\n width: 100%;\n padding: 0.25rem;\n font-family: var(--font-family-sans-serif);\n &:focus {\n outline: none;\n }\n &::placeholder {\n color: #BBBBBB;\n font-weight: medium ;\n }\n`;\nconst CancelButton = styled.button `\n width: 14px;\n height: 14px;\n border-radius: 32px;\n overflow: hidden;\n border: none;\n background: none;\n position: relative;\n cursor: pointer;\n`;\nconst CrossIconLeft = styled.div `\n width: 18px;\n height: 1px;\n left: 0.63px;\n top: 0px;\n position: absolute;\n transform: rotate(45deg);\n transform-origin: 0 0;\n background: #123269;\n`;\nconst CrossIconRight = styled.div `\n width: 18px;\n height: 1px;\n left: 0.63px;\n bottom: 0px;\n position: absolute;\n transform: rotate(-45deg);\n transform-origin: 0 0;\n background: #123269;\n`;\nconst SearchBox = ({ searchTerm, onChange, onClose, resetSearch, translations, search }) => {\n const inputRef = React.useRef(null);\n const isMobile = useMediaQuery('(max-width: 600px)');\n const [debouncedSearchTerm, setDebouncedSearchTerm] = useState('');\n useEffect(() => {\n const timer = setTimeout(() => {\n if (debouncedSearchTerm) {\n pushToDataLayer('search_input', debouncedSearchTerm);\n }\n }, 1000);\n return () => clearTimeout(timer);\n }, [debouncedSearchTerm]);\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') {\n inputRef?.current ? (inputRef.current.value = '') : null;\n resetSearch ? resetSearch() : null;\n onClose?.();\n }\n if (e.key === 'Enter' && inputRef?.current?.value) {\n search(inputRef.current.value + \"&mode=input\");\n }\n };\n const handleChange = (event) => {\n onChange?.(event);\n setDebouncedSearchTerm(event.target.value);\n };\n return (React.createElement(InputContainer$1, null,\n React.createElement(\"div\", { style: { width: 20, height: 20, position: 'relative' } },\n React.createElement(InputIcon, null, isMobile ? React.createElement(FontAwesomeIcon, { icon: faArrowLeft, onClick: onClose }) : React.createElement(FontAwesomeIcon, { icon: faSearch }))),\n React.createElement(Input, { type: \"text\", autoFocus: true, ref: inputRef, placeholder: translations?.searchPlaceholder ?? 'Apply a searchterm', onChange: handleChange, defaultValue: searchTerm, onKeyDown: handleKeyDown }),\n resetSearch && searchTerm !== '' ? (React.createElement(CancelButton, { onClick: () => {\n inputRef?.current ? (inputRef.current.value = '') : null;\n resetSearch();\n } },\n React.createElement(CrossIconLeft, null),\n React.createElement(CrossIconRight, null))) : (React.createElement(CancelButton, null))));\n};\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A static-key-based credential that supports updating\n * the underlying key value.\n */\nclass AzureKeyCredential {\n /**\n * The value of the key to be used in authentication\n */\n get key() {\n return this._key;\n }\n /**\n * Create an instance of an AzureKeyCredential for use\n * with a service client.\n *\n * @param key - The initial value of the key to use in authentication\n */\n constructor(key) {\n if (!key) {\n throw new Error(\"key must be a non-empty string\");\n }\n this._key = key;\n }\n /**\n * Change the value of the key.\n *\n * Updates will take effect upon the next request after\n * updating the key value.\n *\n * @param newKey - The new key value to be used\n */\n update(newKey) {\n this._key = newKey;\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nclass AbortError extends Error {\n constructor(message) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Returns a random integer value between a lower and upper bound,\n * inclusive of both bounds.\n * Note that this uses Math.random and isn't secure. If you need to use\n * this for any kind of security purpose, find a better source of random.\n * @param min - The smallest integer value allowed.\n * @param max - The largest integer value allowed.\n */\nfunction getRandomIntegerInclusive(min, max) {\n // Make sure inputs are integers.\n min = Math.ceil(min);\n max = Math.floor(max);\n // Pick a random offset from zero to the size of the range.\n // Since Math.random() can never return 1, we have to make the range one larger\n // in order to be inclusive of the maximum value after we take the floor.\n const offset = Math.floor(Math.random() * (max - min + 1));\n return offset + min;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Helper to determine when an input is a generic JS object.\n * @returns true when input is an object type that is not null, Array, RegExp, or Date.\n */\nfunction isObject(input) {\n return (typeof input === \"object\" &&\n input !== null &&\n !Array.isArray(input) &&\n !(input instanceof RegExp) &&\n !(input instanceof Date));\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Typeguard for an error object shape (has name and message)\n * @param e - Something caught by a catch clause.\n */\nfunction isError(e) {\n if (isObject(e)) {\n const hasName = typeof e.name === \"string\";\n const hasMessage = typeof e.message === \"string\";\n return hasName && hasMessage;\n }\n return false;\n}\n/**\n * Given what is thought to be an error object, return the message if possible.\n * If the message is missing, returns a stringified version of the input.\n * @param e - Something thrown from a try block\n * @returns The error message or a string of the input\n */\nfunction getErrorMessage(e) {\n if (isError(e)) {\n return e.message;\n }\n else {\n let stringified;\n try {\n if (typeof e === \"object\" && e) {\n stringified = JSON.stringify(e);\n }\n else {\n stringified = String(e);\n }\n }\n catch (err) {\n stringified = \"[unable to stringify input]\";\n }\n return `Unknown error ${stringified}`;\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nfunction stringToUint8Array(value, format) {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nfunction utf8StringToUint8Array(value) {\n return new TextEncoder().encode(value);\n}\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nfunction base64ToUint8Array(value) {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nfunction base64UrlToUint8Array(value) {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nfunction hexStringToUint8Array(value) {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n return bytes;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Helper TypeGuard that checks if something is defined or not.\n * @param thing - Anything\n */\nfunction isDefined(thing) {\n return typeof thing !== \"undefined\" && thing !== null;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nfunction generateUUID() {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n }\n else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += (randomNumber & 0x3) | 0x8;\n }\n else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar _a$1;\n// NOTE: This could be undefined if not used in a secure context\nconst uuidFunction = typeof ((_a$1 = globalThis === null || globalThis === void 0 ? void 0 : globalThis.crypto) === null || _a$1 === void 0 ? void 0 : _a$1.randomUUID) === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : generateUUID;\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nfunction randomUUID() {\n return uuidFunction();\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nvar _a, _b, _c, _d;\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\ntypeof self === \"object\" &&\n typeof (self === null || self === void 0 ? void 0 : self.importScripts) === \"function\" &&\n (((_a = self.constructor) === null || _a === void 0 ? void 0 : _a.name) === \"DedicatedWorkerGlobalScope\" ||\n ((_b = self.constructor) === null || _b === void 0 ? void 0 : _b.name) === \"ServiceWorkerGlobalScope\" ||\n ((_c = self.constructor) === null || _c === void 0 ? void 0 : _c.name) === \"SharedWorkerGlobalScope\");\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\ntypeof Deno !== \"undefined\" &&\n typeof Deno.version !== \"undefined\" &&\n typeof Deno.version.deno !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\ntypeof Bun !== \"undefined\" && typeof Bun.version !== \"undefined\";\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nconst isNodeLike = typeof globalThis.process !== \"undefined\" &&\n Boolean(globalThis.process.version) &&\n Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node);\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Tests an object to determine whether it implements TokenCredential.\n *\n * @param credential - The assumed TokenCredential to be tested.\n */\nfunction isTokenCredential(credential) {\n // Check for an object with a 'getToken' function and possibly with\n // a 'signRequest' function. We do this check to make sure that\n // a ServiceClientCredentials implementor (like TokenClientCredentials\n // in ms-rest-nodeauth) doesn't get mistaken for a TokenCredential if\n // it doesn't actually implement TokenCredential also.\n const castCredential = credential;\n return (castCredential &&\n typeof castCredential.getToken === \"function\" &&\n (castCredential.signRequest === undefined || castCredential.getToken.length > 0));\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst WorldGeodeticSystem1984$1 = \"EPSG:4326\"; // See https://epsg.io/4326\n/**\n * Represents a geographic point in global coordinates.\n */\nclass GeographyPoint {\n /**\n * Constructs a new instance of GeographyPoint given\n * the specified coordinates.\n * @param geographyPoint - object with longitude and latitude values in decimal\n */\n constructor(geographyPoint) {\n this.longitude = geographyPoint.longitude;\n this.latitude = geographyPoint.latitude;\n }\n /**\n * Used to serialize to a GeoJSON Point.\n */\n toJSON() {\n return {\n type: \"Point\",\n coordinates: [this.longitude, this.latitude],\n crs: { type: \"name\", properties: { name: WorldGeodeticSystem1984$1 } },\n };\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Class used to perform batch operations\n * with multiple documents to the index.\n */\nclass IndexDocumentsBatch {\n constructor(actions = []) {\n this.actions = actions;\n }\n /**\n * Upload an array of documents to the index.\n * @param documents - The documents to upload.\n */\n upload(documents) {\n const batch = documents.map((doc) => {\n return Object.assign(Object.assign({}, doc), { __actionType: \"upload\" });\n });\n this.actions.push(...batch);\n }\n /**\n * Update a set of documents in the index.\n * For more details about how merging works, see https://docs.microsoft.com/en-us/rest/api/searchservice/AddUpdate-or-Delete-Documents\n * @param documents - The updated documents.\n */\n merge(documents) {\n const batch = documents.map((doc) => {\n return Object.assign(Object.assign({}, doc), { __actionType: \"merge\" });\n });\n this.actions.push(...batch);\n }\n /**\n * Update a set of documents in the index or uploads them if they don't exist.\n * For more details about how merging works, see https://docs.microsoft.com/en-us/rest/api/searchservice/AddUpdate-or-Delete-Documents\n * @param documents - The new/updated documents.\n */\n mergeOrUpload(documents) {\n const batch = documents.map((doc) => {\n return Object.assign(Object.assign({}, doc), { __actionType: \"mergeOrUpload\" });\n });\n this.actions.push(...batch);\n }\n delete(keyNameOrDocuments, keyValues) {\n if (keyValues) {\n const keyName = keyNameOrDocuments;\n const batch = keyValues.map((keyValue) => {\n return {\n __actionType: \"delete\",\n [keyName]: keyValue,\n };\n });\n this.actions.push(...batch);\n }\n else {\n const documents = keyNameOrDocuments;\n const batch = documents.map((document) => {\n return Object.assign({ __actionType: \"delete\" }, document);\n });\n this.actions.push(...batch);\n }\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction formatNullAndUndefined(input) {\n if (input === null || input === undefined) {\n return \"null\";\n }\n return input;\n}\nfunction escapeQuotesIfString(input, previous) {\n let result = input;\n if (typeof input === \"string\") {\n result = input.replace(/'/g, \"''\");\n // check if we need to escape this literal\n if (!previous.trim().endsWith(\"'\")) {\n result = `'${result}'`;\n }\n }\n return result;\n}\n/**\n * Escapes an odata filter expression to avoid errors with quoting string literals.\n * Example usage:\n * ```ts\n * const baseRateMax = 200;\n * const ratingMin = 4;\n * const filter = odata`Rooms/any(room: room/BaseRate lt ${baseRateMax}) and Rating ge ${ratingMin}`;\n * ```\n * For more information on supported syntax see: https://docs.microsoft.com/en-us/azure/search/search-query-odata-filter\n * @param strings - Array of strings for the expression\n * @param values - Array of values for the expression\n */\nfunction odata(strings, ...values) {\n const results = [];\n for (let i = 0; i < strings.length; i++) {\n results.push(strings[i]);\n if (i < values.length) {\n if (values[i] === null || values[i] === undefined) {\n results.push(formatNullAndUndefined(values[i]));\n }\n else {\n results.push(escapeQuotesIfString(values[i], strings[i]));\n }\n }\n }\n return results.join(\"\");\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Known values for Search Audience\n */\nvar KnownSearchAudience;\n(function (KnownSearchAudience) {\n /**\n * Audience for Azure China\n */\n KnownSearchAudience[\"AzureChina\"] = \"https://search.azure.cn\";\n /**\n * Audience for Azure Government\n */\n KnownSearchAudience[\"AzureGovernment\"] = \"https://search.azure.us\";\n /**\n * Audience for Azure Public\n */\n KnownSearchAudience[\"AzurePublicCloud\"] = \"https://search.azure.com\";\n})(KnownSearchAudience || (KnownSearchAudience = {}));\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst ValidPhaseNames = new Set([\"Deserialize\", \"Serialize\", \"Retry\", \"Sign\"]);\n/**\n * A private implementation of Pipeline.\n * Do not export this class from the package.\n * @internal\n */\nclass HttpPipeline {\n constructor(policies) {\n var _a;\n this._policies = [];\n this._policies = (_a = policies === null || policies === void 0 ? void 0 : policies.slice(0)) !== null && _a !== void 0 ? _a : [];\n this._orderedPolicies = undefined;\n }\n addPolicy(policy, options = {}) {\n if (options.phase && options.afterPhase) {\n throw new Error(\"Policies inside a phase cannot specify afterPhase.\");\n }\n if (options.phase && !ValidPhaseNames.has(options.phase)) {\n throw new Error(`Invalid phase name: ${options.phase}`);\n }\n if (options.afterPhase && !ValidPhaseNames.has(options.afterPhase)) {\n throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);\n }\n this._policies.push({\n policy,\n options,\n });\n this._orderedPolicies = undefined;\n }\n removePolicy(options) {\n const removedPolicies = [];\n this._policies = this._policies.filter((policyDescriptor) => {\n if ((options.name && policyDescriptor.policy.name === options.name) ||\n (options.phase && policyDescriptor.options.phase === options.phase)) {\n removedPolicies.push(policyDescriptor.policy);\n return false;\n }\n else {\n return true;\n }\n });\n this._orderedPolicies = undefined;\n return removedPolicies;\n }\n sendRequest(httpClient, request) {\n const policies = this.getOrderedPolicies();\n const pipeline = policies.reduceRight((next, policy) => {\n return (req) => {\n return policy.sendRequest(req, next);\n };\n }, (req) => httpClient.sendRequest(req));\n return pipeline(request);\n }\n getOrderedPolicies() {\n if (!this._orderedPolicies) {\n this._orderedPolicies = this.orderPolicies();\n }\n return this._orderedPolicies;\n }\n clone() {\n return new HttpPipeline(this._policies);\n }\n static create() {\n return new HttpPipeline();\n }\n orderPolicies() {\n /**\n * The goal of this method is to reliably order pipeline policies\n * based on their declared requirements when they were added.\n *\n * Order is first determined by phase:\n *\n * 1. Serialize Phase\n * 2. Policies not in a phase\n * 3. Deserialize Phase\n * 4. Retry Phase\n * 5. Sign Phase\n *\n * Within each phase, policies are executed in the order\n * they were added unless they were specified to execute\n * before/after other policies or after a particular phase.\n *\n * To determine the final order, we will walk the policy list\n * in phase order multiple times until all dependencies are\n * satisfied.\n *\n * `afterPolicies` are the set of policies that must be\n * executed before a given policy. This requirement is\n * considered satisfied when each of the listed policies\n * have been scheduled.\n *\n * `beforePolicies` are the set of policies that must be\n * executed after a given policy. Since this dependency\n * can be expressed by converting it into a equivalent\n * `afterPolicies` declarations, they are normalized\n * into that form for simplicity.\n *\n * An `afterPhase` dependency is considered satisfied when all\n * policies in that phase have scheduled.\n *\n */\n const result = [];\n // Track all policies we know about.\n const policyMap = new Map();\n function createPhase(name) {\n return {\n name,\n policies: new Set(),\n hasRun: false,\n hasAfterPolicies: false,\n };\n }\n // Track policies for each phase.\n const serializePhase = createPhase(\"Serialize\");\n const noPhase = createPhase(\"None\");\n const deserializePhase = createPhase(\"Deserialize\");\n const retryPhase = createPhase(\"Retry\");\n const signPhase = createPhase(\"Sign\");\n // a list of phases in order\n const orderedPhases = [serializePhase, noPhase, deserializePhase, retryPhase, signPhase];\n // Small helper function to map phase name to each Phase\n function getPhase(phase) {\n if (phase === \"Retry\") {\n return retryPhase;\n }\n else if (phase === \"Serialize\") {\n return serializePhase;\n }\n else if (phase === \"Deserialize\") {\n return deserializePhase;\n }\n else if (phase === \"Sign\") {\n return signPhase;\n }\n else {\n return noPhase;\n }\n }\n // First walk each policy and create a node to track metadata.\n for (const descriptor of this._policies) {\n const policy = descriptor.policy;\n const options = descriptor.options;\n const policyName = policy.name;\n if (policyMap.has(policyName)) {\n throw new Error(\"Duplicate policy names not allowed in pipeline\");\n }\n const node = {\n policy,\n dependsOn: new Set(),\n dependants: new Set(),\n };\n if (options.afterPhase) {\n node.afterPhase = getPhase(options.afterPhase);\n node.afterPhase.hasAfterPolicies = true;\n }\n policyMap.set(policyName, node);\n const phase = getPhase(options.phase);\n phase.policies.add(node);\n }\n // Now that each policy has a node, connect dependency references.\n for (const descriptor of this._policies) {\n const { policy, options } = descriptor;\n const policyName = policy.name;\n const node = policyMap.get(policyName);\n if (!node) {\n throw new Error(`Missing node for policy ${policyName}`);\n }\n if (options.afterPolicies) {\n for (const afterPolicyName of options.afterPolicies) {\n const afterNode = policyMap.get(afterPolicyName);\n if (afterNode) {\n // Linking in both directions helps later\n // when we want to notify dependants.\n node.dependsOn.add(afterNode);\n afterNode.dependants.add(node);\n }\n }\n }\n if (options.beforePolicies) {\n for (const beforePolicyName of options.beforePolicies) {\n const beforeNode = policyMap.get(beforePolicyName);\n if (beforeNode) {\n // To execute before another node, make it\n // depend on the current node.\n beforeNode.dependsOn.add(node);\n node.dependants.add(beforeNode);\n }\n }\n }\n }\n function walkPhase(phase) {\n phase.hasRun = true;\n // Sets iterate in insertion order\n for (const node of phase.policies) {\n if (node.afterPhase && (!node.afterPhase.hasRun || node.afterPhase.policies.size)) {\n // If this node is waiting on a phase to complete,\n // we need to skip it for now.\n // Even if the phase is empty, we should wait for it\n // to be walked to avoid re-ordering policies.\n continue;\n }\n if (node.dependsOn.size === 0) {\n // If there's nothing else we're waiting for, we can\n // add this policy to the result list.\n result.push(node.policy);\n // Notify anything that depends on this policy that\n // the policy has been scheduled.\n for (const dependant of node.dependants) {\n dependant.dependsOn.delete(node);\n }\n policyMap.delete(node.policy.name);\n phase.policies.delete(node);\n }\n }\n }\n function walkPhases() {\n for (const phase of orderedPhases) {\n walkPhase(phase);\n // if the phase isn't complete\n if (phase.policies.size > 0 && phase !== noPhase) {\n if (!noPhase.hasRun) {\n // Try running noPhase to see if that unblocks this phase next tick.\n // This can happen if a phase that happens before noPhase\n // is waiting on a noPhase policy to complete.\n walkPhase(noPhase);\n }\n // Don't proceed to the next phase until this phase finishes.\n return;\n }\n if (phase.hasAfterPolicies) {\n // Run any policies unblocked by this phase\n walkPhase(noPhase);\n }\n }\n }\n // Iterate until we've put every node in the result list.\n let iteration = 0;\n while (policyMap.size > 0) {\n iteration++;\n const initialResultLength = result.length;\n // Keep walking each phase in order until we can order every node.\n walkPhases();\n // The result list *should* get at least one larger each time\n // after the first full pass.\n // Otherwise, we're going to loop forever.\n if (result.length <= initialResultLength && iteration > 1) {\n throw new Error(\"Cannot satisfy policy dependencies due to requirements cycle.\");\n }\n }\n return result;\n }\n}\n/**\n * Creates a totally empty pipeline.\n * Useful for testing or creating a custom one.\n */\nfunction createEmptyPipeline() {\n return HttpPipeline.create();\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction log(...args) {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n }\n else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n }\n else if (firstArg.includes(\":info\")) {\n console.info(...args);\n }\n else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n }\n else {\n console.debug(...args);\n }\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst debugEnvVariable = (typeof process !== \"undefined\" && process.env && process.env.DEBUG) || undefined;\nlet enabledString;\nlet enabledNamespaces = [];\nlet skippedNamespaces = [];\nconst debuggers = [];\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\nconst debugObj = Object.assign((namespace) => {\n return createDebugger(namespace);\n}, {\n enable,\n enabled,\n disable,\n log,\n});\nfunction enable(namespaces) {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const wildcard = /\\*/g;\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim().replace(wildcard, \".*?\"));\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(new RegExp(`^${ns.substr(1)}$`));\n }\n else {\n enabledNamespaces.push(new RegExp(`^${ns}$`));\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\nfunction enabled(namespace) {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n for (const skipped of skippedNamespaces) {\n if (skipped.test(namespace)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (enabledNamespace.test(namespace)) {\n return true;\n }\n }\n return false;\n}\nfunction disable() {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\nfunction createDebugger(namespace) {\n const newDebugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n function debug(...args) {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n debuggers.push(newDebugger);\n return newDebugger;\n}\nfunction destroy() {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\nfunction extend(namespace) {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst registeredLoggers = new Set();\nconst logLevelFromEnv = (typeof process !== \"undefined\" && process.env && process.env.AZURE_LOG_LEVEL) || undefined;\nlet azureLogLevel;\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nconst AzureLogger = debugObj(\"azure\");\nAzureLogger.log = (...args) => {\n debugObj.log(...args);\n};\nconst AZURE_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\nif (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isAzureLogLevel(logLevelFromEnv)) {\n setLogLevel(logLevelFromEnv);\n }\n else {\n console.error(`AZURE_LOG_LEVEL set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${AZURE_LOG_LEVELS.join(\", \")}.`);\n }\n}\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nfunction setLogLevel(level) {\n if (level && !isAzureLogLevel(level)) {\n throw new Error(`Unknown log level '${level}'. Acceptable values: ${AZURE_LOG_LEVELS.join(\",\")}`);\n }\n azureLogLevel = level;\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n debugObj.enable(enabledNamespaces.join(\",\"));\n}\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nfunction createClientLogger(namespace) {\n const clientRootLogger = AzureLogger.extend(namespace);\n patchLogMethod(AzureLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n}\nfunction patchLogMethod(parent, child) {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\nfunction createLogger(parent, level) {\n const logger = Object.assign(parent.extend(level), {\n level,\n });\n patchLogMethod(parent, logger);\n if (shouldEnable(logger)) {\n const enabledNamespaces = debugObj.disable();\n debugObj.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n registeredLoggers.add(logger);\n return logger;\n}\nfunction shouldEnable(logger) {\n return Boolean(azureLogLevel && levelMap[logger.level] <= levelMap[azureLogLevel]);\n}\nfunction isAzureLogLevel(logLevel) {\n return AZURE_LOG_LEVELS.includes(logLevel);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst logger$2 = createClientLogger(\"core-rest-pipeline\");\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst RedactedString = \"REDACTED\";\n// Make sure this list is up-to-date with the one under core/logger/Readme#Keyconcepts\nconst defaultAllowedHeaderNames = [\n \"x-ms-client-request-id\",\n \"x-ms-return-client-request-id\",\n \"x-ms-useragent\",\n \"x-ms-correlation-request-id\",\n \"x-ms-request-id\",\n \"client-request-id\",\n \"ms-cv\",\n \"return-client-request-id\",\n \"traceparent\",\n \"Access-Control-Allow-Credentials\",\n \"Access-Control-Allow-Headers\",\n \"Access-Control-Allow-Methods\",\n \"Access-Control-Allow-Origin\",\n \"Access-Control-Expose-Headers\",\n \"Access-Control-Max-Age\",\n \"Access-Control-Request-Headers\",\n \"Access-Control-Request-Method\",\n \"Origin\",\n \"Accept\",\n \"Accept-Encoding\",\n \"Cache-Control\",\n \"Connection\",\n \"Content-Length\",\n \"Content-Type\",\n \"Date\",\n \"ETag\",\n \"Expires\",\n \"If-Match\",\n \"If-Modified-Since\",\n \"If-None-Match\",\n \"If-Unmodified-Since\",\n \"Last-Modified\",\n \"Pragma\",\n \"Request-Id\",\n \"Retry-After\",\n \"Server\",\n \"Transfer-Encoding\",\n \"User-Agent\",\n \"WWW-Authenticate\",\n];\nconst defaultAllowedQueryParameters = [\"api-version\"];\n/**\n * @internal\n */\nclass Sanitizer {\n constructor({ additionalAllowedHeaderNames: allowedHeaderNames = [], additionalAllowedQueryParameters: allowedQueryParameters = [], } = {}) {\n allowedHeaderNames = defaultAllowedHeaderNames.concat(allowedHeaderNames);\n allowedQueryParameters = defaultAllowedQueryParameters.concat(allowedQueryParameters);\n this.allowedHeaderNames = new Set(allowedHeaderNames.map((n) => n.toLowerCase()));\n this.allowedQueryParameters = new Set(allowedQueryParameters.map((p) => p.toLowerCase()));\n }\n sanitize(obj) {\n const seen = new Set();\n return JSON.stringify(obj, (key, value) => {\n // Ensure Errors include their interesting non-enumerable members\n if (value instanceof Error) {\n return Object.assign(Object.assign({}, value), { name: value.name, message: value.message });\n }\n if (key === \"headers\") {\n return this.sanitizeHeaders(value);\n }\n else if (key === \"url\") {\n return this.sanitizeUrl(value);\n }\n else if (key === \"query\") {\n return this.sanitizeQuery(value);\n }\n else if (key === \"body\") {\n // Don't log the request body\n return undefined;\n }\n else if (key === \"response\") {\n // Don't log response again\n return undefined;\n }\n else if (key === \"operationSpec\") {\n // When using sendOperationRequest, the request carries a massive\n // field with the autorest spec. No need to log it.\n return undefined;\n }\n else if (Array.isArray(value) || isObject(value)) {\n if (seen.has(value)) {\n return \"[Circular]\";\n }\n seen.add(value);\n }\n return value;\n }, 2);\n }\n sanitizeUrl(value) {\n if (typeof value !== \"string\" || value === null || value === \"\") {\n return value;\n }\n const url = new URL(value);\n if (!url.search) {\n return value;\n }\n for (const [key] of url.searchParams) {\n if (!this.allowedQueryParameters.has(key.toLowerCase())) {\n url.searchParams.set(key, RedactedString);\n }\n }\n return url.toString();\n }\n sanitizeHeaders(obj) {\n const sanitized = {};\n for (const key of Object.keys(obj)) {\n if (this.allowedHeaderNames.has(key.toLowerCase())) {\n sanitized[key] = obj[key];\n }\n else {\n sanitized[key] = RedactedString;\n }\n }\n return sanitized;\n }\n sanitizeQuery(value) {\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n const sanitized = {};\n for (const k of Object.keys(value)) {\n if (this.allowedQueryParameters.has(k.toLowerCase())) {\n sanitized[k] = value[k];\n }\n else {\n sanitized[k] = RedactedString;\n }\n }\n return sanitized;\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the logPolicy.\n */\nconst logPolicyName = \"logPolicy\";\n/**\n * A policy that logs all requests and responses.\n * @param options - Options to configure logPolicy.\n */\nfunction logPolicy(options = {}) {\n var _a;\n const logger = (_a = options.logger) !== null && _a !== void 0 ? _a : logger$2.info;\n const sanitizer = new Sanitizer({\n additionalAllowedHeaderNames: options.additionalAllowedHeaderNames,\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n return {\n name: logPolicyName,\n async sendRequest(request, next) {\n if (!logger.enabled) {\n return next(request);\n }\n logger(`Request: ${sanitizer.sanitize(request)}`);\n const response = await next(request);\n logger(`Response status code: ${response.status}`);\n logger(`Headers: ${sanitizer.sanitize(response.headers)}`);\n return response;\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the redirectPolicy.\n */\nconst redirectPolicyName = \"redirectPolicy\";\n/**\n * Methods that are allowed to follow redirects 301 and 302\n */\nconst allowedRedirect = [\"GET\", \"HEAD\"];\n/**\n * A policy to follow Location headers from the server in order\n * to support server-side redirection.\n * In the browser, this policy is not used.\n * @param options - Options to control policy behavior.\n */\nfunction redirectPolicy(options = {}) {\n const { maxRetries = 20 } = options;\n return {\n name: redirectPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return handleRedirect(next, response, maxRetries);\n },\n };\n}\nasync function handleRedirect(next, response, maxRetries, currentRetries = 0) {\n const { request, status, headers } = response;\n const locationHeader = headers.get(\"location\");\n if (locationHeader &&\n (status === 300 ||\n (status === 301 && allowedRedirect.includes(request.method)) ||\n (status === 302 && allowedRedirect.includes(request.method)) ||\n (status === 303 && request.method === \"POST\") ||\n status === 307) &&\n currentRetries < maxRetries) {\n const url = new URL(locationHeader, request.url);\n request.url = url.toString();\n // POST request with Status code 303 should be converted into a\n // redirected GET request if the redirect url is present in the location header\n if (status === 303) {\n request.method = \"GET\";\n request.headers.delete(\"Content-Length\");\n delete request.body;\n }\n request.headers.delete(\"Authorization\");\n const res = await next(request);\n return handleRedirect(next, res, maxRetries, currentRetries + 1);\n }\n return response;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * @internal\n */\nfunction getHeaderName() {\n return \"x-ms-useragent\";\n}\nfunction getBrowserInfo(userAgent) {\n const browserRegexes = [\n { name: \"Firefox\", regex: /Firefox\\/([\\d.]+)/ },\n { name: \"Safari\", regex: /Version\\/([\\d.]+).*Safari/ },\n ];\n for (const browser of browserRegexes) {\n const match = userAgent.match(browser.regex);\n if (match) {\n return { brand: browser.name, version: match[1] };\n }\n }\n return undefined;\n}\nfunction getBrandVersionString(brands) {\n const brandOrder = [\"Google Chrome\", \"Microsoft Edge\", \"Opera\", \"Brave\", \"Chromium\"];\n for (const brand of brandOrder) {\n const foundBrand = brands.find((b) => b.brand === brand);\n if (foundBrand) {\n return foundBrand;\n }\n }\n return undefined;\n}\n/**\n * @internal\n */\nasync function setPlatformSpecificData(map) {\n const localNavigator = globalThis.navigator;\n let osPlatform = \"unknown\";\n if (localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.userAgentData) {\n const entropyValues = await localNavigator.userAgentData.getHighEntropyValues([\n \"architecture\",\n \"platformVersion\",\n ]);\n osPlatform = `${entropyValues.architecture}-${entropyValues.platform}-${entropyValues.platformVersion}`;\n // Get the brand and version\n const brand = getBrandVersionString(localNavigator.userAgentData.brands);\n if (brand) {\n map.set(brand.brand, brand.version);\n }\n }\n else if (localNavigator === null || localNavigator === void 0 ? void 0 : localNavigator.platform) {\n osPlatform = localNavigator.platform;\n const brand = getBrowserInfo(localNavigator.userAgent);\n if (brand) {\n map.set(brand.brand, brand.version);\n }\n }\n else if (typeof globalThis.EdgeRuntime === \"string\") {\n map.set(\"EdgeRuntime\", globalThis.EdgeRuntime);\n }\n map.set(\"OS\", osPlatform);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst SDK_VERSION = \"1.16.3\";\nconst DEFAULT_RETRY_POLICY_COUNT = 3;\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction getUserAgentString(telemetryInfo) {\n const parts = [];\n for (const [key, value] of telemetryInfo) {\n const token = value ? `${key}/${value}` : key;\n parts.push(token);\n }\n return parts.join(\" \");\n}\n/**\n * @internal\n */\nfunction getUserAgentHeaderName() {\n return getHeaderName();\n}\n/**\n * @internal\n */\nasync function getUserAgentValue(prefix) {\n const runtimeInfo = new Map();\n runtimeInfo.set(\"core-rest-pipeline\", SDK_VERSION);\n await setPlatformSpecificData(runtimeInfo);\n const defaultAgent = getUserAgentString(runtimeInfo);\n const userAgentValue = prefix ? `${prefix} ${defaultAgent}` : defaultAgent;\n return userAgentValue;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst UserAgentHeaderName = getUserAgentHeaderName();\n/**\n * The programmatic identifier of the userAgentPolicy.\n */\nconst userAgentPolicyName = \"userAgentPolicy\";\n/**\n * A policy that sets the User-Agent header (or equivalent) to reflect\n * the library version.\n * @param options - Options to customize the user agent value.\n */\nfunction userAgentPolicy(options = {}) {\n const userAgentValue = getUserAgentValue(options.userAgentPrefix);\n return {\n name: userAgentPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(UserAgentHeaderName)) {\n request.headers.set(UserAgentHeaderName, await userAgentValue);\n }\n return next(request);\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction isNodeReadableStream(x) {\n return Boolean(x && typeof x[\"pipe\"] === \"function\");\n}\nfunction isWebReadableStream(x) {\n return Boolean(x &&\n typeof x.getReader === \"function\" &&\n typeof x.tee === \"function\");\n}\nfunction isBlob$1(x) {\n return typeof x.stream === \"function\";\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Private symbol used as key on objects created using createFile containing the\n * original source of the file object.\n *\n * This is used in Node to access the original Node stream without using Blob#stream, which\n * returns a web stream. This is done to avoid a couple of bugs to do with Blob#stream and\n * Readable#to/fromWeb in Node versions we support:\n * - https://github.com/nodejs/node/issues/42694 (fixed in Node 18.14)\n * - https://github.com/nodejs/node/issues/48916 (fixed in Node 20.6)\n *\n * Once these versions are no longer supported, we may be able to stop doing this.\n *\n * @internal\n */\nconst rawContent = Symbol(\"rawContent\");\nfunction hasRawContent(x) {\n return typeof x[rawContent] === \"function\";\n}\n/**\n * Extract the raw content from a given blob-like object. If the input was created using createFile\n * or createFileFromStream, the exact content passed into createFile/createFileFromStream will be used.\n * For true instances of Blob and File, returns the blob's content as a Web ReadableStream.\n *\n * @internal\n */\nfunction getRawContent(blob) {\n if (hasRawContent(blob)) {\n return blob[rawContent]();\n }\n else {\n return blob.stream();\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Drain the content of the given ReadableStream into a Blob.\n * The blob's content may end up in memory or on disk dependent on size.\n */\nfunction drain(stream) {\n return new Response(stream).blob();\n}\nasync function toBlobPart(source) {\n if (source instanceof Blob || source instanceof Uint8Array) {\n return source;\n }\n if (isWebReadableStream(source)) {\n return drain(source);\n }\n // If it's not a true Blob, and it's not a Uint8Array, we can assume the source\n // is a fake File created by createFileFromStream and we can get the original stream\n // using getRawContent.\n const rawContent = getRawContent(source);\n // Shouldn't happen but guard for it anyway\n if (isNodeReadableStream(rawContent)) {\n throw new Error(\"Encountered unexpected type. In the browser, `concat` supports Web ReadableStream, Blob, Uint8Array, and files created using `createFile` only.\");\n }\n return toBlobPart(rawContent);\n}\n/**\n * Utility function that concatenates a set of binary inputs into one combined output.\n *\n * @param sources - array of sources for the concatenation\n * @returns - in Node, a (() =\\> NodeJS.ReadableStream) which, when read, produces a concatenation of all the inputs.\n * In browser, returns a `Blob` representing all the concatenated inputs.\n *\n * @internal\n */\nasync function concat(sources) {\n const parts = [];\n for (const source of sources) {\n parts.push(await toBlobPart(typeof source === \"function\" ? source() : source));\n }\n return new Blob(parts);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction generateBoundary() {\n return `----AzSDKFormBoundary${randomUUID()}`;\n}\nfunction encodeHeaders(headers) {\n let result = \"\";\n for (const [key, value] of headers) {\n result += `${key}: ${value}\\r\\n`;\n }\n return result;\n}\nfunction getLength(source) {\n if (source instanceof Uint8Array) {\n return source.byteLength;\n }\n else if (isBlob$1(source)) {\n // if was created using createFile then -1 means we have an unknown size\n return source.size === -1 ? undefined : source.size;\n }\n else {\n return undefined;\n }\n}\nfunction getTotalLength(sources) {\n let total = 0;\n for (const source of sources) {\n const partLength = getLength(source);\n if (partLength === undefined) {\n return undefined;\n }\n else {\n total += partLength;\n }\n }\n return total;\n}\nasync function buildRequestBody$1(request, parts, boundary) {\n const sources = [\n stringToUint8Array(`--${boundary}`, \"utf-8\"),\n ...parts.flatMap((part) => [\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n stringToUint8Array(encodeHeaders(part.headers), \"utf-8\"),\n stringToUint8Array(\"\\r\\n\", \"utf-8\"),\n part.body,\n stringToUint8Array(`\\r\\n--${boundary}`, \"utf-8\"),\n ]),\n stringToUint8Array(\"--\\r\\n\\r\\n\", \"utf-8\"),\n ];\n const contentLength = getTotalLength(sources);\n if (contentLength) {\n request.headers.set(\"Content-Length\", contentLength);\n }\n request.body = await concat(sources);\n}\n/**\n * Name of multipart policy\n */\nconst multipartPolicyName = \"multipartPolicy\";\nconst maxBoundaryLength = 70;\nconst validBoundaryCharacters = new Set(`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?`);\nfunction assertValidBoundary(boundary) {\n if (boundary.length > maxBoundaryLength) {\n throw new Error(`Multipart boundary \"${boundary}\" exceeds maximum length of 70 characters`);\n }\n if (Array.from(boundary).some((x) => !validBoundaryCharacters.has(x))) {\n throw new Error(`Multipart boundary \"${boundary}\" contains invalid characters`);\n }\n}\n/**\n * Pipeline policy for multipart requests\n */\nfunction multipartPolicy() {\n return {\n name: multipartPolicyName,\n async sendRequest(request, next) {\n var _a;\n if (!request.multipartBody) {\n return next(request);\n }\n if (request.body) {\n throw new Error(\"multipartBody and regular body cannot be set at the same time\");\n }\n let boundary = request.multipartBody.boundary;\n const contentTypeHeader = (_a = request.headers.get(\"Content-Type\")) !== null && _a !== void 0 ? _a : \"multipart/mixed\";\n const parsedHeader = contentTypeHeader.match(/^(multipart\\/[^ ;]+)(?:; *boundary=(.+))?$/);\n if (!parsedHeader) {\n throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);\n }\n const [, contentType, parsedBoundary] = parsedHeader;\n if (parsedBoundary && boundary && parsedBoundary !== boundary) {\n throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);\n }\n boundary !== null && boundary !== void 0 ? boundary : (boundary = parsedBoundary);\n if (boundary) {\n assertValidBoundary(boundary);\n }\n else {\n boundary = generateBoundary();\n }\n request.headers.set(\"Content-Type\", `${contentType}; boundary=${boundary}`);\n await buildRequestBody$1(request, request.multipartBody.parts, boundary);\n request.multipartBody = undefined;\n return next(request);\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/*\n * NOTE: When moving this file, please update \"browser\" section in package.json\n */\n/**\n * decompressResponsePolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nfunction decompressResponsePolicy() {\n throw new Error(\"decompressResponsePolicy is not supported in browser environment\");\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst StandardAbortMessage = \"The operation was aborted.\";\n/**\n * A wrapper for setTimeout that resolves a promise after delayInMs milliseconds.\n * @param delayInMs - The number of milliseconds to be delayed.\n * @param value - The value to be resolved with after a timeout of t milliseconds.\n * @param options - The options for delay - currently abort options\n * - abortSignal - The abortSignal associated with containing operation.\n * - abortErrorMsg - The abort error message associated with containing operation.\n * @returns Resolved promise\n */\nfunction delay(delayInMs, value, options) {\n return new Promise((resolve, reject) => {\n let timer = undefined;\n let onAborted = undefined;\n const rejectOnAbort = () => {\n return reject(new AbortError((options === null || options === void 0 ? void 0 : options.abortErrorMsg) ? options === null || options === void 0 ? void 0 : options.abortErrorMsg : StandardAbortMessage));\n };\n const removeListeners = () => {\n if ((options === null || options === void 0 ? void 0 : options.abortSignal) && onAborted) {\n options.abortSignal.removeEventListener(\"abort\", onAborted);\n }\n };\n onAborted = () => {\n if (timer) {\n clearTimeout(timer);\n }\n removeListeners();\n return rejectOnAbort();\n };\n if ((options === null || options === void 0 ? void 0 : options.abortSignal) && options.abortSignal.aborted) {\n return rejectOnAbort();\n }\n timer = setTimeout(() => {\n removeListeners();\n resolve(value);\n }, delayInMs);\n if (options === null || options === void 0 ? void 0 : options.abortSignal) {\n options.abortSignal.addEventListener(\"abort\", onAborted);\n }\n });\n}\n/**\n * @internal\n * @returns the parsed value or undefined if the parsed value is invalid.\n */\nfunction parseHeaderValueAsNumber(response, headerName) {\n const value = response.headers.get(headerName);\n if (!value)\n return;\n const valueAsNum = Number(value);\n if (Number.isNaN(valueAsNum))\n return;\n return valueAsNum;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The header that comes back from Azure services representing\n * the amount of time (minimum) to wait to retry (in seconds or timestamp after which we can retry).\n */\nconst RetryAfterHeader = \"Retry-After\";\n/**\n * The headers that come back from Azure services representing\n * the amount of time (minimum) to wait to retry.\n *\n * \"retry-after-ms\", \"x-ms-retry-after-ms\" : milliseconds\n * \"Retry-After\" : seconds or timestamp\n */\nconst AllRetryAfterHeaders = [\"retry-after-ms\", \"x-ms-retry-after-ms\", RetryAfterHeader];\n/**\n * A response is a throttling retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n *\n * Returns the `retryAfterInMs` value if the response is a throttling retry response.\n * If not throttling retry response, returns `undefined`.\n *\n * @internal\n */\nfunction getRetryAfterInMs(response) {\n if (!(response && [429, 503].includes(response.status)))\n return undefined;\n try {\n // Headers: \"retry-after-ms\", \"x-ms-retry-after-ms\", \"Retry-After\"\n for (const header of AllRetryAfterHeaders) {\n const retryAfterValue = parseHeaderValueAsNumber(response, header);\n if (retryAfterValue === 0 || retryAfterValue) {\n // \"Retry-After\" header ==> seconds\n // \"retry-after-ms\", \"x-ms-retry-after-ms\" headers ==> milli-seconds\n const multiplyingFactor = header === RetryAfterHeader ? 1000 : 1;\n return retryAfterValue * multiplyingFactor; // in milli-seconds\n }\n }\n // RetryAfterHeader (\"Retry-After\") has a special case where it might be formatted as a date instead of a number of seconds\n const retryAfterHeader = response.headers.get(RetryAfterHeader);\n if (!retryAfterHeader)\n return;\n const date = Date.parse(retryAfterHeader);\n const diff = date - Date.now();\n // negative diff would mean a date in the past, so retry asap with 0 milliseconds\n return Number.isFinite(diff) ? Math.max(0, diff) : undefined;\n }\n catch (e) {\n return undefined;\n }\n}\n/**\n * A response is a retry response if it has a throttling status code (429 or 503),\n * as long as one of the [ \"Retry-After\" or \"retry-after-ms\" or \"x-ms-retry-after-ms\" ] headers has a valid value.\n */\nfunction isThrottlingRetryResponse(response) {\n return Number.isFinite(getRetryAfterInMs(response));\n}\nfunction throttlingRetryStrategy() {\n return {\n name: \"throttlingRetryStrategy\",\n retry({ response }) {\n const retryAfterInMs = getRetryAfterInMs(response);\n if (!Number.isFinite(retryAfterInMs)) {\n return { skipStrategy: true };\n }\n return {\n retryAfterInMs,\n };\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// intervals are in milliseconds\nconst DEFAULT_CLIENT_RETRY_INTERVAL = 1000;\nconst DEFAULT_CLIENT_MAX_RETRY_INTERVAL = 1000 * 64;\n/**\n * A retry strategy that retries with an exponentially increasing delay in these two cases:\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails (408, greater or equal than 500, except for 501 and 505).\n */\nfunction exponentialRetryStrategy(options = {}) {\n var _a, _b;\n const retryInterval = (_a = options.retryDelayInMs) !== null && _a !== void 0 ? _a : DEFAULT_CLIENT_RETRY_INTERVAL;\n const maxRetryInterval = (_b = options.maxRetryDelayInMs) !== null && _b !== void 0 ? _b : DEFAULT_CLIENT_MAX_RETRY_INTERVAL;\n let retryAfterInMs = retryInterval;\n return {\n name: \"exponentialRetryStrategy\",\n retry({ retryCount, response, responseError }) {\n const matchedSystemError = isSystemError(responseError);\n const ignoreSystemErrors = matchedSystemError && options.ignoreSystemErrors;\n const isExponential = isExponentialRetryResponse(response);\n const ignoreExponentialResponse = isExponential && options.ignoreHttpStatusCodes;\n const unknownResponse = response && (isThrottlingRetryResponse(response) || !isExponential);\n if (unknownResponse || ignoreExponentialResponse || ignoreSystemErrors) {\n return { skipStrategy: true };\n }\n if (responseError && !matchedSystemError && !isExponential) {\n return { errorToThrow: responseError };\n }\n // Exponentially increase the delay each time\n const exponentialDelay = retryAfterInMs * Math.pow(2, retryCount);\n // Don't let the delay exceed the maximum\n const clampedExponentialDelay = Math.min(maxRetryInterval, exponentialDelay);\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n retryAfterInMs =\n clampedExponentialDelay / 2 + getRandomIntegerInclusive(0, clampedExponentialDelay / 2);\n return { retryAfterInMs };\n },\n };\n}\n/**\n * A response is a retry response if it has status codes:\n * - 408, or\n * - Greater or equal than 500, except for 501 and 505.\n */\nfunction isExponentialRetryResponse(response) {\n return Boolean(response &&\n response.status !== undefined &&\n (response.status >= 500 || response.status === 408) &&\n response.status !== 501 &&\n response.status !== 505);\n}\n/**\n * Determines whether an error from a pipeline response was triggered in the network layer.\n */\nfunction isSystemError(err) {\n if (!err) {\n return false;\n }\n return (err.code === \"ETIMEDOUT\" ||\n err.code === \"ESOCKETTIMEDOUT\" ||\n err.code === \"ECONNREFUSED\" ||\n err.code === \"ECONNRESET\" ||\n err.code === \"ENOENT\" ||\n err.code === \"ENOTFOUND\");\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst retryPolicyLogger = createClientLogger(\"core-rest-pipeline retryPolicy\");\n/**\n * The programmatic identifier of the retryPolicy.\n */\nconst retryPolicyName = \"retryPolicy\";\n/**\n * retryPolicy is a generic policy to enable retrying requests when certain conditions are met\n */\nfunction retryPolicy(strategies, options = { maxRetries: DEFAULT_RETRY_POLICY_COUNT }) {\n const logger = options.logger || retryPolicyLogger;\n return {\n name: retryPolicyName,\n async sendRequest(request, next) {\n var _a, _b;\n let response;\n let responseError;\n let retryCount = -1;\n // eslint-disable-next-line no-constant-condition\n retryRequest: while (true) {\n retryCount += 1;\n response = undefined;\n responseError = undefined;\n try {\n logger.info(`Retry ${retryCount}: Attempting to send request`, request.requestId);\n response = await next(request);\n logger.info(`Retry ${retryCount}: Received a response from request`, request.requestId);\n }\n catch (e) {\n logger.error(`Retry ${retryCount}: Received an error from request`, request.requestId);\n // RestErrors are valid targets for the retry strategies.\n // If none of the retry strategies can work with them, they will be thrown later in this policy.\n // If the received error is not a RestError, it is immediately thrown.\n responseError = e;\n if (!e || responseError.name !== \"RestError\") {\n throw e;\n }\n response = responseError.response;\n }\n if ((_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.aborted) {\n logger.error(`Retry ${retryCount}: Request aborted.`);\n const abortError = new AbortError();\n throw abortError;\n }\n if (retryCount >= ((_b = options.maxRetries) !== null && _b !== void 0 ? _b : DEFAULT_RETRY_POLICY_COUNT)) {\n logger.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`);\n if (responseError) {\n throw responseError;\n }\n else if (response) {\n return response;\n }\n else {\n throw new Error(\"Maximum retries reached with no response or error to throw\");\n }\n }\n logger.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);\n strategiesLoop: for (const strategy of strategies) {\n const strategyLogger = strategy.logger || retryPolicyLogger;\n strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);\n const modifiers = strategy.retry({\n retryCount,\n response,\n responseError,\n });\n if (modifiers.skipStrategy) {\n strategyLogger.info(`Retry ${retryCount}: Skipped.`);\n continue strategiesLoop;\n }\n const { errorToThrow, retryAfterInMs, redirectTo } = modifiers;\n if (errorToThrow) {\n strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`, errorToThrow);\n throw errorToThrow;\n }\n if (retryAfterInMs || retryAfterInMs === 0) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`);\n await delay(retryAfterInMs, undefined, { abortSignal: request.abortSignal });\n continue retryRequest;\n }\n if (redirectTo) {\n strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`);\n request.url = redirectTo;\n continue retryRequest;\n }\n }\n if (responseError) {\n logger.info(`None of the retry strategies could work with the received error. Throwing it.`);\n throw responseError;\n }\n if (response) {\n logger.info(`None of the retry strategies could work with the received response. Returning it.`);\n return response;\n }\n // If all the retries skip and there's no response,\n // we're still in the retry loop, so a new request will be sent\n // until `maxRetries` is reached.\n }\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Name of the {@link defaultRetryPolicy}\n */\nconst defaultRetryPolicyName = \"defaultRetryPolicy\";\n/**\n * A policy that retries according to three strategies:\n * - When the server sends a 429 response with a Retry-After header.\n * - When there are errors in the underlying transport layer (e.g. DNS lookup failures).\n * - Or otherwise if the outgoing request fails, it will retry with an exponentially increasing delay.\n */\nfunction defaultRetryPolicy(options = {}) {\n var _a;\n return {\n name: defaultRetryPolicyName,\n sendRequest: retryPolicy([throttlingRetryStrategy(), exponentialRetryStrategy(options)], {\n maxRetries: (_a = options.maxRetries) !== null && _a !== void 0 ? _a : DEFAULT_RETRY_POLICY_COUNT,\n }).sendRequest,\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction normalizeName(name) {\n return name.toLowerCase();\n}\nfunction* headerIterator(map) {\n for (const entry of map.values()) {\n yield [entry.name, entry.value];\n }\n}\nclass HttpHeadersImpl {\n constructor(rawHeaders) {\n this._headersMap = new Map();\n if (rawHeaders) {\n for (const headerName of Object.keys(rawHeaders)) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param name - The name of the header to set. This value is case-insensitive.\n * @param value - The value of the header to set.\n */\n set(name, value) {\n this._headersMap.set(normalizeName(name), { name, value: String(value).trim() });\n }\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param name - The name of the header. This value is case-insensitive.\n */\n get(name) {\n var _a;\n return (_a = this._headersMap.get(normalizeName(name))) === null || _a === void 0 ? void 0 : _a.value;\n }\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n * @param name - The name of the header to set. This value is case-insensitive.\n */\n has(name) {\n return this._headersMap.has(normalizeName(name));\n }\n /**\n * Remove the header with the provided headerName.\n * @param name - The name of the header to remove.\n */\n delete(name) {\n this._headersMap.delete(normalizeName(name));\n }\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n toJSON(options = {}) {\n const result = {};\n if (options.preserveCase) {\n for (const entry of this._headersMap.values()) {\n result[entry.name] = entry.value;\n }\n }\n else {\n for (const [normalizedName, entry] of this._headersMap) {\n result[normalizedName] = entry.value;\n }\n }\n return result;\n }\n /**\n * Get the string representation of this HTTP header collection.\n */\n toString() {\n return JSON.stringify(this.toJSON({ preserveCase: true }));\n }\n /**\n * Iterate over tuples of header [name, value] pairs.\n */\n [Symbol.iterator]() {\n return headerIterator(this._headersMap);\n }\n}\n/**\n * Creates an object that satisfies the `HttpHeaders` interface.\n * @param rawHeaders - A simple object representing initial headers\n */\nfunction createHttpHeaders(rawHeaders) {\n return new HttpHeadersImpl(rawHeaders);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the formDataPolicy.\n */\nconst formDataPolicyName = \"formDataPolicy\";\nfunction formDataToFormDataMap(formData) {\n var _a;\n const formDataMap = {};\n for (const [key, value] of formData.entries()) {\n (_a = formDataMap[key]) !== null && _a !== void 0 ? _a : (formDataMap[key] = []);\n formDataMap[key].push(value);\n }\n return formDataMap;\n}\n/**\n * A policy that encodes FormData on the request into the body.\n */\nfunction formDataPolicy() {\n return {\n name: formDataPolicyName,\n async sendRequest(request, next) {\n if (isNodeLike && typeof FormData !== \"undefined\" && request.body instanceof FormData) {\n request.formData = formDataToFormDataMap(request.body);\n request.body = undefined;\n }\n if (request.formData) {\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && contentType.indexOf(\"application/x-www-form-urlencoded\") !== -1) {\n request.body = wwwFormUrlEncode(request.formData);\n }\n else {\n await prepareFormData(request.formData, request);\n }\n request.formData = undefined;\n }\n return next(request);\n },\n };\n}\nfunction wwwFormUrlEncode(formData) {\n const urlSearchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(formData)) {\n if (Array.isArray(value)) {\n for (const subValue of value) {\n urlSearchParams.append(key, subValue.toString());\n }\n }\n else {\n urlSearchParams.append(key, value.toString());\n }\n }\n return urlSearchParams.toString();\n}\nasync function prepareFormData(formData, request) {\n // validate content type (multipart/form-data)\n const contentType = request.headers.get(\"Content-Type\");\n if (contentType && !contentType.startsWith(\"multipart/form-data\")) {\n // content type is specified and is not multipart/form-data. Exit.\n return;\n }\n request.headers.set(\"Content-Type\", contentType !== null && contentType !== void 0 ? contentType : \"multipart/form-data\");\n // set body to MultipartRequestBody using content from FormDataMap\n const parts = [];\n for (const [fieldName, values] of Object.entries(formData)) {\n for (const value of Array.isArray(values) ? values : [values]) {\n if (typeof value === \"string\") {\n parts.push({\n headers: createHttpHeaders({\n \"Content-Disposition\": `form-data; name=\"${fieldName}\"`,\n }),\n body: stringToUint8Array(value, \"utf-8\"),\n });\n }\n else if (value === undefined || value === null || typeof value !== \"object\") {\n throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`);\n }\n else {\n // using || instead of ?? here since if value.name is empty we should create a file name\n const fileName = value.name || \"blob\";\n const headers = createHttpHeaders();\n headers.set(\"Content-Disposition\", `form-data; name=\"${fieldName}\"; filename=\"${fileName}\"`);\n // again, || is used since an empty value.type means the content type is unset\n headers.set(\"Content-Type\", value.type || \"application/octet-stream\");\n parts.push({\n headers,\n body: value,\n });\n }\n }\n }\n request.multipartBody = { parts };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst errorMessage = \"proxyPolicy is not supported in browser environment\";\n/**\n * proxyPolicy is not supported in the browser and attempting\n * to use it will raise an error.\n */\nfunction proxyPolicy() {\n throw new Error(errorMessage);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the setClientRequestIdPolicy.\n */\nconst setClientRequestIdPolicyName = \"setClientRequestIdPolicy\";\n/**\n * Each PipelineRequest gets a unique id upon creation.\n * This policy passes that unique id along via an HTTP header to enable better\n * telemetry and tracing.\n * @param requestIdHeaderName - The name of the header to pass the request ID to.\n */\nfunction setClientRequestIdPolicy(requestIdHeaderName = \"x-ms-client-request-id\") {\n return {\n name: setClientRequestIdPolicyName,\n async sendRequest(request, next) {\n if (!request.headers.has(requestIdHeaderName)) {\n request.headers.set(requestIdHeaderName, request.requestId);\n }\n return next(request);\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Name of the TLS Policy\n */\nconst tlsPolicyName = \"tlsPolicy\";\n/**\n * Gets a pipeline policy that adds the client certificate to the HttpClient agent for authentication.\n */\nfunction tlsPolicy(tlsSettings) {\n return {\n name: tlsPolicyName,\n sendRequest: async (req, next) => {\n // Users may define a request tlsSettings, honor those over the client level one\n if (!req.tlsSettings) {\n req.tlsSettings = tlsSettings;\n }\n return next(req);\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/** @internal */\nconst knownContextKeys = {\n span: Symbol.for(\"@azure/core-tracing span\"),\n namespace: Symbol.for(\"@azure/core-tracing namespace\"),\n};\n/**\n * Creates a new {@link TracingContext} with the given options.\n * @param options - A set of known keys that may be set on the context.\n * @returns A new {@link TracingContext} with the given options.\n *\n * @internal\n */\nfunction createTracingContext(options = {}) {\n let context = new TracingContextImpl(options.parentContext);\n if (options.span) {\n context = context.setValue(knownContextKeys.span, options.span);\n }\n if (options.namespace) {\n context = context.setValue(knownContextKeys.namespace, options.namespace);\n }\n return context;\n}\n/** @internal */\nclass TracingContextImpl {\n constructor(initialContext) {\n this._contextMap =\n initialContext instanceof TracingContextImpl\n ? new Map(initialContext._contextMap)\n : new Map();\n }\n setValue(key, value) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.set(key, value);\n return newContext;\n }\n getValue(key) {\n return this._contextMap.get(key);\n }\n deleteValue(key) {\n const newContext = new TracingContextImpl(this);\n newContext._contextMap.delete(key);\n return newContext;\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nconst state$1 = {\n instrumenterImplementation: undefined,\n};\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction createDefaultTracingSpan() {\n return {\n end: () => {\n // noop\n },\n isRecording: () => false,\n recordException: () => {\n // noop\n },\n setAttribute: () => {\n // noop\n },\n setStatus: () => {\n // noop\n },\n };\n}\nfunction createDefaultInstrumenter() {\n return {\n createRequestHeaders: () => {\n return {};\n },\n parseTraceparentHeader: () => {\n return undefined;\n },\n startSpan: (_name, spanOptions) => {\n return {\n span: createDefaultTracingSpan(),\n tracingContext: createTracingContext({ parentContext: spanOptions.tracingContext }),\n };\n },\n withContext(_context, callback, ...callbackArgs) {\n return callback(...callbackArgs);\n },\n };\n}\n/**\n * Gets the currently set instrumenter, a No-Op instrumenter by default.\n *\n * @returns The currently set instrumenter\n */\nfunction getInstrumenter() {\n if (!state$1.instrumenterImplementation) {\n state$1.instrumenterImplementation = createDefaultInstrumenter();\n }\n return state$1.instrumenterImplementation;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Creates a new tracing client.\n *\n * @param options - Options used to configure the tracing client.\n * @returns - An instance of {@link TracingClient}.\n */\nfunction createTracingClient(options) {\n const { namespace, packageName, packageVersion } = options;\n function startSpan(name, operationOptions, spanOptions) {\n var _a;\n const startSpanResult = getInstrumenter().startSpan(name, Object.assign(Object.assign({}, spanOptions), { packageName: packageName, packageVersion: packageVersion, tracingContext: (_a = operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext }));\n let tracingContext = startSpanResult.tracingContext;\n const span = startSpanResult.span;\n if (!tracingContext.getValue(knownContextKeys.namespace)) {\n tracingContext = tracingContext.setValue(knownContextKeys.namespace, namespace);\n }\n span.setAttribute(\"az.namespace\", tracingContext.getValue(knownContextKeys.namespace));\n const updatedOptions = Object.assign({}, operationOptions, {\n tracingOptions: Object.assign(Object.assign({}, operationOptions === null || operationOptions === void 0 ? void 0 : operationOptions.tracingOptions), { tracingContext }),\n });\n return {\n span,\n updatedOptions,\n };\n }\n async function withSpan(name, operationOptions, callback, spanOptions) {\n const { span, updatedOptions } = startSpan(name, operationOptions, spanOptions);\n try {\n const result = await withContext(updatedOptions.tracingOptions.tracingContext, () => Promise.resolve(callback(updatedOptions, span)));\n span.setStatus({ status: \"success\" });\n return result;\n }\n catch (err) {\n span.setStatus({ status: \"error\", error: err });\n throw err;\n }\n finally {\n span.end();\n }\n }\n function withContext(context, callback, ...callbackArgs) {\n return getInstrumenter().withContext(context, callback, ...callbackArgs);\n }\n /**\n * Parses a traceparent header value into a span identifier.\n *\n * @param traceparentHeader - The traceparent header to parse.\n * @returns An implementation-specific identifier for the span.\n */\n function parseTraceparentHeader(traceparentHeader) {\n return getInstrumenter().parseTraceparentHeader(traceparentHeader);\n }\n /**\n * Creates a set of request headers to propagate tracing information to a backend.\n *\n * @param tracingContext - The context containing the span to serialize.\n * @returns The set of headers to add to a request.\n */\n function createRequestHeaders(tracingContext) {\n return getInstrumenter().createRequestHeaders(tracingContext);\n }\n return {\n startSpan,\n withSpan,\n withContext,\n parseTraceparentHeader,\n createRequestHeaders,\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst custom = {};\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst errorSanitizer = new Sanitizer();\n/**\n * A custom error type for failed pipeline requests.\n */\nclass RestError extends Error {\n constructor(message, options = {}) {\n super(message);\n this.name = \"RestError\";\n this.code = options.code;\n this.statusCode = options.statusCode;\n // The request and response may contain sensitive information in the headers or body.\n // To help prevent this sensitive information being accidentally logged, the request and response\n // properties are marked as non-enumerable here. This prevents them showing up in the output of\n // JSON.stringify and console.log.\n Object.defineProperty(this, \"request\", { value: options.request, enumerable: false });\n Object.defineProperty(this, \"response\", { value: options.response, enumerable: false });\n Object.setPrototypeOf(this, RestError.prototype);\n }\n /**\n * Logging method for util.inspect in Node\n */\n [custom]() {\n // Extract non-enumerable properties and add them back. This is OK since in this output the request and\n // response get sanitized.\n return `RestError: ${this.message} \\n ${errorSanitizer.sanitize(Object.assign(Object.assign({}, this), { request: this.request, response: this.response }))}`;\n }\n}\n/**\n * Something went wrong when making the request.\n * This means the actual request failed for some reason,\n * such as a DNS issue or the connection being lost.\n */\nRestError.REQUEST_SEND_ERROR = \"REQUEST_SEND_ERROR\";\n/**\n * This means that parsing the response from the server failed.\n * It may have been malformed.\n */\nRestError.PARSE_ERROR = \"PARSE_ERROR\";\n/**\n * Typeguard for RestError\n * @param e - Something caught by a catch clause.\n */\nfunction isRestError(e) {\n if (e instanceof RestError) {\n return true;\n }\n return isError(e) && e.name === \"RestError\";\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the tracingPolicy.\n */\nconst tracingPolicyName = \"tracingPolicy\";\n/**\n * A simple policy to create OpenTelemetry Spans for each request made by the pipeline\n * that has SpanOptions with a parent.\n * Requests made without a parent Span will not be recorded.\n * @param options - Options to configure the telemetry logged by the tracing policy.\n */\nfunction tracingPolicy(options = {}) {\n const userAgentPromise = getUserAgentValue(options.userAgentPrefix);\n const sanitizer = new Sanitizer({\n additionalAllowedQueryParameters: options.additionalAllowedQueryParameters,\n });\n const tracingClient = tryCreateTracingClient();\n return {\n name: tracingPolicyName,\n async sendRequest(request, next) {\n var _a, _b;\n if (!tracingClient || !((_a = request.tracingOptions) === null || _a === void 0 ? void 0 : _a.tracingContext)) {\n return next(request);\n }\n const userAgent = await userAgentPromise;\n const spanAttributes = {\n \"http.url\": sanitizer.sanitizeUrl(request.url),\n \"http.method\": request.method,\n \"http.user_agent\": userAgent,\n requestId: request.requestId,\n };\n if (userAgent) {\n spanAttributes[\"http.user_agent\"] = userAgent;\n }\n const { span, tracingContext } = (_b = tryCreateSpan(tracingClient, request, spanAttributes)) !== null && _b !== void 0 ? _b : {};\n if (!span || !tracingContext) {\n return next(request);\n }\n try {\n const response = await tracingClient.withContext(tracingContext, next, request);\n tryProcessResponse(span, response);\n return response;\n }\n catch (err) {\n tryProcessError(span, err);\n throw err;\n }\n },\n };\n}\nfunction tryCreateTracingClient() {\n try {\n return createTracingClient({\n namespace: \"\",\n packageName: \"@azure/core-rest-pipeline\",\n packageVersion: SDK_VERSION,\n });\n }\n catch (e) {\n logger$2.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\nfunction tryCreateSpan(tracingClient, request, spanAttributes) {\n try {\n // As per spec, we do not need to differentiate between HTTP and HTTPS in span name.\n const { span, updatedOptions } = tracingClient.startSpan(`HTTP ${request.method}`, { tracingOptions: request.tracingOptions }, {\n spanKind: \"client\",\n spanAttributes,\n });\n // If the span is not recording, don't do any more work.\n if (!span.isRecording()) {\n span.end();\n return undefined;\n }\n // set headers\n const headers = tracingClient.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);\n for (const [key, value] of Object.entries(headers)) {\n request.headers.set(key, value);\n }\n return { span, tracingContext: updatedOptions.tracingOptions.tracingContext };\n }\n catch (e) {\n logger$2.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);\n return undefined;\n }\n}\nfunction tryProcessError(span, error) {\n try {\n span.setStatus({\n status: \"error\",\n error: isError(error) ? error : undefined,\n });\n if (isRestError(error) && error.statusCode) {\n span.setAttribute(\"http.status_code\", error.statusCode);\n }\n span.end();\n }\n catch (e) {\n logger$2.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\nfunction tryProcessResponse(span, response) {\n try {\n span.setAttribute(\"http.status_code\", response.status);\n const serviceRequestId = response.headers.get(\"x-ms-request-id\");\n if (serviceRequestId) {\n span.setAttribute(\"serviceRequestId\", serviceRequestId);\n }\n span.setStatus({\n status: \"success\",\n });\n span.end();\n }\n catch (e) {\n logger$2.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`);\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Create a new pipeline with a default set of customizable policies.\n * @param options - Options to configure a custom pipeline.\n */\nfunction createPipelineFromOptions(options) {\n var _a;\n const pipeline = createEmptyPipeline();\n if (isNodeLike) {\n if (options.tlsOptions) {\n pipeline.addPolicy(tlsPolicy(options.tlsOptions));\n }\n pipeline.addPolicy(proxyPolicy(options.proxyOptions));\n pipeline.addPolicy(decompressResponsePolicy());\n }\n pipeline.addPolicy(formDataPolicy(), { beforePolicies: [multipartPolicyName] });\n pipeline.addPolicy(userAgentPolicy(options.userAgentOptions));\n pipeline.addPolicy(setClientRequestIdPolicy((_a = options.telemetryOptions) === null || _a === void 0 ? void 0 : _a.clientRequestIdHeaderName));\n // The multipart policy is added after policies with no phase, so that\n // policies can be added between it and formDataPolicy to modify\n // properties (e.g., making the boundary constant in recorded tests).\n pipeline.addPolicy(multipartPolicy(), { afterPhase: \"Deserialize\" });\n pipeline.addPolicy(defaultRetryPolicy(options.retryOptions), { phase: \"Retry\" });\n pipeline.addPolicy(tracingPolicy(Object.assign(Object.assign({}, options.userAgentOptions), options.loggingOptions)), {\n afterPhase: \"Retry\",\n });\n if (isNodeLike) {\n // Both XHR and Fetch expect to handle redirects automatically,\n // so only include this policy when we're in Node.\n pipeline.addPolicy(redirectPolicy(options.redirectOptions), { afterPhase: \"Retry\" });\n }\n pipeline.addPolicy(logPolicy(options.loggingOptions), { afterPhase: \"Sign\" });\n return pipeline;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Checks if the body is a Blob or Blob-like\n */\nfunction isBlob(body) {\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n return (typeof Blob === \"function\" || typeof Blob === \"object\") && body instanceof Blob;\n}\n/**\n * A HttpClient implementation that uses window.fetch to send HTTP requests.\n * @internal\n */\nclass FetchHttpClient {\n /**\n * Makes a request over an underlying transport layer and returns the response.\n * @param request - The request to be made.\n */\n async sendRequest(request) {\n const url = new URL(request.url);\n const isInsecure = url.protocol !== \"https:\";\n if (isInsecure && !request.allowInsecureConnection) {\n throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);\n }\n if (request.proxySettings) {\n throw new Error(\"HTTP proxy is not supported in browser environment\");\n }\n try {\n return await makeRequest(request);\n }\n catch (e) {\n throw getError(e, request);\n }\n }\n}\n/**\n * Sends a request\n */\nasync function makeRequest(request) {\n const { abortController, abortControllerCleanup } = setupAbortSignal(request);\n try {\n const headers = buildFetchHeaders(request.headers);\n const { streaming, body: requestBody } = buildRequestBody(request);\n const requestInit = Object.assign(Object.assign({ body: requestBody, method: request.method, headers: headers, signal: abortController.signal }, (\"credentials\" in Request.prototype\n ? { credentials: request.withCredentials ? \"include\" : \"same-origin\" }\n : {})), (\"cache\" in Request.prototype ? { cache: \"no-store\" } : {}));\n // According to https://fetch.spec.whatwg.org/#fetch-method,\n // init.duplex must be set when body is a ReadableStream object.\n // currently \"half\" is the only valid value.\n if (streaming) {\n requestInit.duplex = \"half\";\n }\n /**\n * Developers of the future:\n * Do not set redirect: \"manual\" as part\n * of request options.\n * It will not work as you expect.\n */\n const response = await fetch(request.url, requestInit);\n // If we're uploading a blob, we need to fire the progress event manually\n if (isBlob(request.body) && request.onUploadProgress) {\n request.onUploadProgress({ loadedBytes: request.body.size });\n }\n return buildPipelineResponse(response, request, abortControllerCleanup);\n }\n catch (e) {\n abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n throw e;\n }\n}\n/**\n * Creates a pipeline response from a Fetch response;\n */\nasync function buildPipelineResponse(httpResponse, request, abortControllerCleanup) {\n var _a, _b;\n const headers = buildPipelineHeaders(httpResponse);\n const response = {\n request,\n headers,\n status: httpResponse.status,\n };\n const bodyStream = isWebReadableStream(httpResponse.body)\n ? buildBodyStream(httpResponse.body, {\n onProgress: request.onDownloadProgress,\n onEnd: abortControllerCleanup,\n })\n : httpResponse.body;\n if (\n // Value of POSITIVE_INFINITY in streamResponseStatusCodes is considered as any status code\n ((_a = request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(Number.POSITIVE_INFINITY)) ||\n ((_b = request.streamResponseStatusCodes) === null || _b === void 0 ? void 0 : _b.has(response.status))) {\n if (request.enableBrowserStreams) {\n response.browserStreamBody = bodyStream !== null && bodyStream !== void 0 ? bodyStream : undefined;\n }\n else {\n const responseStream = new Response(bodyStream);\n response.blobBody = responseStream.blob();\n abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n }\n }\n else {\n const responseStream = new Response(bodyStream);\n response.bodyAsText = await responseStream.text();\n abortControllerCleanup === null || abortControllerCleanup === void 0 ? void 0 : abortControllerCleanup();\n }\n return response;\n}\nfunction setupAbortSignal(request) {\n const abortController = new AbortController();\n // Cleanup function\n let abortControllerCleanup;\n /**\n * Attach an abort listener to the request\n */\n let abortListener;\n if (request.abortSignal) {\n if (request.abortSignal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n abortListener = (event) => {\n if (event.type === \"abort\") {\n abortController.abort();\n }\n };\n request.abortSignal.addEventListener(\"abort\", abortListener);\n abortControllerCleanup = () => {\n var _a;\n if (abortListener) {\n (_a = request.abortSignal) === null || _a === void 0 ? void 0 : _a.removeEventListener(\"abort\", abortListener);\n }\n };\n }\n // If a timeout was passed, call the abort signal once the time elapses\n if (request.timeout > 0) {\n setTimeout(() => {\n abortController.abort();\n }, request.timeout);\n }\n return { abortController, abortControllerCleanup };\n}\n/**\n * Gets the specific error\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\nfunction getError(e, request) {\n var _a;\n if (e && (e === null || e === void 0 ? void 0 : e.name) === \"AbortError\") {\n return e;\n }\n else {\n return new RestError(`Error sending request: ${e.message}`, {\n code: (_a = e === null || e === void 0 ? void 0 : e.code) !== null && _a !== void 0 ? _a : RestError.REQUEST_SEND_ERROR,\n request,\n });\n }\n}\n/**\n * Converts PipelineRequest headers to Fetch headers\n */\nfunction buildFetchHeaders(pipelineHeaders) {\n const headers = new Headers();\n for (const [name, value] of pipelineHeaders) {\n headers.append(name, value);\n }\n return headers;\n}\nfunction buildPipelineHeaders(httpResponse) {\n const responseHeaders = createHttpHeaders();\n for (const [name, value] of httpResponse.headers) {\n responseHeaders.set(name, value);\n }\n return responseHeaders;\n}\nfunction buildRequestBody(request) {\n const body = typeof request.body === \"function\" ? request.body() : request.body;\n if (isNodeReadableStream(body)) {\n throw new Error(\"Node streams are not supported in browser environment.\");\n }\n return isWebReadableStream(body)\n ? { streaming: true, body: buildBodyStream(body, { onProgress: request.onUploadProgress }) }\n : { streaming: false, body };\n}\n/**\n * Reads the request/response original stream and stream it through a new\n * ReadableStream, this is done to be able to report progress in a way that\n * all modern browsers support. TransformStreams would be an alternative,\n * however they are not yet supported by all browsers i.e Firefox\n */\nfunction buildBodyStream(readableStream, options = {}) {\n let loadedBytes = 0;\n const { onProgress, onEnd } = options;\n // If the current browser supports pipeThrough we use a TransformStream\n // to report progress\n if (isTransformStreamSupported(readableStream)) {\n return readableStream.pipeThrough(new TransformStream({\n transform(chunk, controller) {\n if (chunk === null) {\n controller.terminate();\n return;\n }\n controller.enqueue(chunk);\n loadedBytes += chunk.length;\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n flush() {\n onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n },\n }));\n }\n else {\n // If we can't use transform streams, wrap the original stream in a new readable stream\n // and use pull to enqueue each chunk and report progress.\n const reader = readableStream.getReader();\n return new ReadableStream({\n async pull(controller) {\n var _a;\n const { done, value } = await reader.read();\n // When no more data needs to be consumed, break the reading\n if (done || !value) {\n onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n // Close the stream\n controller.close();\n reader.releaseLock();\n return;\n }\n loadedBytes += (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 0;\n // Enqueue the next data chunk into our target stream\n controller.enqueue(value);\n if (onProgress) {\n onProgress({ loadedBytes });\n }\n },\n cancel(reason) {\n onEnd === null || onEnd === void 0 ? void 0 : onEnd();\n return reader.cancel(reason);\n },\n });\n }\n}\n/**\n * Create a new HttpClient instance for the browser environment.\n * @internal\n */\nfunction createFetchHttpClient() {\n return new FetchHttpClient();\n}\nfunction isTransformStreamSupported(readableStream) {\n return readableStream.pipeThrough !== undefined && self.TransformStream !== undefined;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Create the correct HttpClient for the current environment.\n */\nfunction createDefaultHttpClient() {\n return createFetchHttpClient();\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nclass PipelineRequestImpl {\n constructor(options) {\n var _a, _b, _c, _d, _e, _f, _g;\n this.url = options.url;\n this.body = options.body;\n this.headers = (_a = options.headers) !== null && _a !== void 0 ? _a : createHttpHeaders();\n this.method = (_b = options.method) !== null && _b !== void 0 ? _b : \"GET\";\n this.timeout = (_c = options.timeout) !== null && _c !== void 0 ? _c : 0;\n this.multipartBody = options.multipartBody;\n this.formData = options.formData;\n this.disableKeepAlive = (_d = options.disableKeepAlive) !== null && _d !== void 0 ? _d : false;\n this.proxySettings = options.proxySettings;\n this.streamResponseStatusCodes = options.streamResponseStatusCodes;\n this.withCredentials = (_e = options.withCredentials) !== null && _e !== void 0 ? _e : false;\n this.abortSignal = options.abortSignal;\n this.tracingOptions = options.tracingOptions;\n this.onUploadProgress = options.onUploadProgress;\n this.onDownloadProgress = options.onDownloadProgress;\n this.requestId = options.requestId || randomUUID();\n this.allowInsecureConnection = (_f = options.allowInsecureConnection) !== null && _f !== void 0 ? _f : false;\n this.enableBrowserStreams = (_g = options.enableBrowserStreams) !== null && _g !== void 0 ? _g : false;\n }\n}\n/**\n * Creates a new pipeline request with the given options.\n * This method is to allow for the easy setting of default values and not required.\n * @param options - The options to create the request with.\n */\nfunction createPipelineRequest(options) {\n return new PipelineRequestImpl(options);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n// Default options for the cycler if none are provided\nconst DEFAULT_CYCLER_OPTIONS = {\n forcedRefreshWindowInMs: 1000, // Force waiting for a refresh 1s before the token expires\n retryIntervalInMs: 3000, // Allow refresh attempts every 3s\n refreshWindowInMs: 1000 * 60 * 2, // Start refreshing 2m before expiry\n};\n/**\n * Converts an an unreliable access token getter (which may resolve with null)\n * into an AccessTokenGetter by retrying the unreliable getter in a regular\n * interval.\n *\n * @param getAccessToken - A function that produces a promise of an access token that may fail by returning null.\n * @param retryIntervalInMs - The time (in milliseconds) to wait between retry attempts.\n * @param refreshTimeout - The timestamp after which the refresh attempt will fail, throwing an exception.\n * @returns - A promise that, if it resolves, will resolve with an access token.\n */\nasync function beginRefresh(getAccessToken, retryIntervalInMs, refreshTimeout) {\n // This wrapper handles exceptions gracefully as long as we haven't exceeded\n // the timeout.\n async function tryGetAccessToken() {\n if (Date.now() < refreshTimeout) {\n try {\n return await getAccessToken();\n }\n catch (_a) {\n return null;\n }\n }\n else {\n const finalToken = await getAccessToken();\n // Timeout is up, so throw if it's still null\n if (finalToken === null) {\n throw new Error(\"Failed to refresh access token.\");\n }\n return finalToken;\n }\n }\n let token = await tryGetAccessToken();\n while (token === null) {\n await delay(retryIntervalInMs);\n token = await tryGetAccessToken();\n }\n return token;\n}\n/**\n * Creates a token cycler from a credential, scopes, and optional settings.\n *\n * A token cycler represents a way to reliably retrieve a valid access token\n * from a TokenCredential. It will handle initializing the token, refreshing it\n * when it nears expiration, and synchronizes refresh attempts to avoid\n * concurrency hazards.\n *\n * @param credential - the underlying TokenCredential that provides the access\n * token\n * @param tokenCyclerOptions - optionally override default settings for the cycler\n *\n * @returns - a function that reliably produces a valid access token\n */\nfunction createTokenCycler(credential, tokenCyclerOptions) {\n let refreshWorker = null;\n let token = null;\n let tenantId;\n const options = Object.assign(Object.assign({}, DEFAULT_CYCLER_OPTIONS), tokenCyclerOptions);\n /**\n * This little holder defines several predicates that we use to construct\n * the rules of refreshing the token.\n */\n const cycler = {\n /**\n * Produces true if a refresh job is currently in progress.\n */\n get isRefreshing() {\n return refreshWorker !== null;\n },\n /**\n * Produces true if the cycler SHOULD refresh (we are within the refresh\n * window and not already refreshing)\n */\n get shouldRefresh() {\n var _a;\n return (!cycler.isRefreshing &&\n ((_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : 0) - options.refreshWindowInMs < Date.now());\n },\n /**\n * Produces true if the cycler MUST refresh (null or nearly-expired\n * token).\n */\n get mustRefresh() {\n return (token === null || token.expiresOnTimestamp - options.forcedRefreshWindowInMs < Date.now());\n },\n };\n /**\n * Starts a refresh job or returns the existing job if one is already\n * running.\n */\n function refresh(scopes, getTokenOptions) {\n var _a;\n if (!cycler.isRefreshing) {\n // We bind `scopes` here to avoid passing it around a lot\n const tryGetAccessToken = () => credential.getToken(scopes, getTokenOptions);\n // Take advantage of promise chaining to insert an assignment to `token`\n // before the refresh can be considered done.\n refreshWorker = beginRefresh(tryGetAccessToken, options.retryIntervalInMs, \n // If we don't have a token, then we should timeout immediately\n (_a = token === null || token === void 0 ? void 0 : token.expiresOnTimestamp) !== null && _a !== void 0 ? _a : Date.now())\n .then((_token) => {\n refreshWorker = null;\n token = _token;\n tenantId = getTokenOptions.tenantId;\n return token;\n })\n .catch((reason) => {\n // We also should reset the refresher if we enter a failed state. All\n // existing awaiters will throw, but subsequent requests will start a\n // new retry chain.\n refreshWorker = null;\n token = null;\n tenantId = undefined;\n throw reason;\n });\n }\n return refreshWorker;\n }\n return async (scopes, tokenOptions) => {\n //\n // Simple rules:\n // - If we MUST refresh, then return the refresh task, blocking\n // the pipeline until a token is available.\n // - If we SHOULD refresh, then run refresh but don't return it\n // (we can still use the cached token).\n // - Return the token, since it's fine if we didn't return in\n // step 1.\n //\n const hasClaimChallenge = Boolean(tokenOptions.claims);\n const tenantIdChanged = tenantId !== tokenOptions.tenantId;\n if (hasClaimChallenge) {\n // If we've received a claim, we know the existing token isn't valid\n // We want to clear it so that that refresh worker won't use the old expiration time as a timeout\n token = null;\n }\n // If the tenantId passed in token options is different to the one we have\n // Or if we are in claim challenge and the token was rejected and a new access token need to be issued, we need to\n // refresh the token with the new tenantId or token.\n const mustRefresh = tenantIdChanged || hasClaimChallenge || cycler.mustRefresh;\n if (mustRefresh) {\n return refresh(scopes, tokenOptions);\n }\n if (cycler.shouldRefresh) {\n refresh(scopes, tokenOptions);\n }\n return token;\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the bearerTokenAuthenticationPolicy.\n */\nconst bearerTokenAuthenticationPolicyName = \"bearerTokenAuthenticationPolicy\";\n/**\n * Default authorize request handler\n */\nasync function defaultAuthorizeRequest(options) {\n const { scopes, getAccessToken, request } = options;\n const getTokenOptions = {\n abortSignal: request.abortSignal,\n tracingOptions: request.tracingOptions,\n };\n const accessToken = await getAccessToken(scopes, getTokenOptions);\n if (accessToken) {\n options.request.headers.set(\"Authorization\", `Bearer ${accessToken.token}`);\n }\n}\n/**\n * We will retrieve the challenge only if the response status code was 401,\n * and if the response contained the header \"WWW-Authenticate\" with a non-empty value.\n */\nfunction getChallenge(response) {\n const challenge = response.headers.get(\"WWW-Authenticate\");\n if (response.status === 401 && challenge) {\n return challenge;\n }\n return;\n}\n/**\n * A policy that can request a token from a TokenCredential implementation and\n * then apply it to the Authorization header of a request as a Bearer token.\n */\nfunction bearerTokenAuthenticationPolicy(options) {\n var _a;\n const { credential, scopes, challengeCallbacks } = options;\n const logger = options.logger || logger$2;\n const callbacks = Object.assign({ authorizeRequest: (_a = challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequest) !== null && _a !== void 0 ? _a : defaultAuthorizeRequest, authorizeRequestOnChallenge: challengeCallbacks === null || challengeCallbacks === void 0 ? void 0 : challengeCallbacks.authorizeRequestOnChallenge }, challengeCallbacks);\n // This function encapsulates the entire process of reliably retrieving the token\n // The options are left out of the public API until there's demand to configure this.\n // Remember to extend `BearerTokenAuthenticationPolicyOptions` with `TokenCyclerOptions`\n // in order to pass through the `options` object.\n const getAccessToken = credential\n ? createTokenCycler(credential /* , options */)\n : () => Promise.resolve(null);\n return {\n name: bearerTokenAuthenticationPolicyName,\n /**\n * If there's no challenge parameter:\n * - It will try to retrieve the token using the cache, or the credential's getToken.\n * - Then it will try the next policy with or without the retrieved token.\n *\n * It uses the challenge parameters to:\n * - Skip a first attempt to get the token from the credential if there's no cached token,\n * since it expects the token to be retrievable only after the challenge.\n * - Prepare the outgoing request if the `prepareRequest` method has been provided.\n * - Send an initial request to receive the challenge if it fails.\n * - Process a challenge if the response contains it.\n * - Retrieve a token with the challenge information, then re-send the request.\n */\n async sendRequest(request, next) {\n if (!request.url.toLowerCase().startsWith(\"https://\")) {\n throw new Error(\"Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.\");\n }\n await callbacks.authorizeRequest({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n getAccessToken,\n logger,\n });\n let response;\n let error;\n try {\n response = await next(request);\n }\n catch (err) {\n error = err;\n response = err.response;\n }\n if (callbacks.authorizeRequestOnChallenge &&\n (response === null || response === void 0 ? void 0 : response.status) === 401 &&\n getChallenge(response)) {\n // processes challenge\n const shouldSendRequest = await callbacks.authorizeRequestOnChallenge({\n scopes: Array.isArray(scopes) ? scopes : [scopes],\n request,\n response,\n getAccessToken,\n logger,\n });\n if (shouldSendRequest) {\n return next(request);\n }\n }\n if (error) {\n throw error;\n }\n else {\n return response;\n }\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Encodes a string in base64 format.\n * @param value - The string to encode.\n */\nfunction encode(value) {\n return btoa(value);\n}\n/**\n * Decodes a base64 string into a regular string.\n * @param value - The base64 string to decode.\n */\nfunction decode(value) {\n return atob(value);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst disableKeepAlivePolicyName = \"DisableKeepAlivePolicy\";\nfunction createDisableKeepAlivePolicy() {\n return {\n name: disableKeepAlivePolicyName,\n async sendRequest(request, next) {\n request.disableKeepAlive = true;\n return next(request);\n },\n };\n}\n/**\n * @internal\n */\nfunction pipelineContainsDisableKeepAlivePolicy(pipeline) {\n return pipeline.getOrderedPolicies().some((policy) => policy.name === disableKeepAlivePolicyName);\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Encodes a string in base64 format.\n * @param value - the string to encode\n * @internal\n */\n/**\n * Encodes a byte array in base64 format.\n * @param value - the Uint8Aray to encode\n * @internal\n */\nfunction encodeByteArray(value) {\n let str = \"\";\n for (let i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return btoa(str);\n}\n/**\n * Decodes a base64 string into a byte array.\n * @param value - the base64 string to decode\n * @internal\n */\nfunction decodeString(value) {\n const byteString = atob(value);\n const arr = new Uint8Array(byteString.length);\n for (let i = 0; i < byteString.length; i++) {\n arr[i] = byteString.charCodeAt(i);\n }\n return arr;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Default key used to access the XML attributes.\n */\nconst XML_ATTRKEY = \"$\";\n/**\n * Default key used to access the XML value content.\n */\nconst XML_CHARKEY = \"_\";\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A type guard for a primitive response body.\n * @param value - Value to test\n *\n * @internal\n */\nfunction isPrimitiveBody(value, mapperTypeName) {\n return (mapperTypeName !== \"Composite\" &&\n mapperTypeName !== \"Dictionary\" &&\n (typeof value === \"string\" ||\n typeof value === \"number\" ||\n typeof value === \"boolean\" ||\n (mapperTypeName === null || mapperTypeName === void 0 ? void 0 : mapperTypeName.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)) !==\n null ||\n value === undefined ||\n value === null));\n}\nconst validateISODuration = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n/**\n * Returns true if the given string is in ISO 8601 format.\n * @param value - The value to be validated for ISO 8601 duration format.\n * @internal\n */\nfunction isDuration(value) {\n return validateISODuration.test(value);\n}\nconst validUuidRegex = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;\n/**\n * Returns true if the provided uuid is valid.\n *\n * @param uuid - The uuid that needs to be validated.\n *\n * @internal\n */\nfunction isValidUuid(uuid) {\n return validUuidRegex.test(uuid);\n}\n/**\n * Maps the response as follows:\n * - wraps the response body if needed (typically if its type is primitive).\n * - returns null if the combination of the headers and the body is empty.\n * - otherwise, returns the combination of the headers and the body.\n *\n * @param responseObject - a representation of the parsed response\n * @returns the response that will be returned to the user which can be null and/or wrapped\n *\n * @internal\n */\nfunction handleNullableResponseAndWrappableBody(responseObject) {\n const combinedHeadersAndBody = Object.assign(Object.assign({}, responseObject.headers), responseObject.body);\n if (responseObject.hasNullableType &&\n Object.getOwnPropertyNames(combinedHeadersAndBody).length === 0) {\n return responseObject.shouldWrapBody ? { body: null } : null;\n }\n else {\n return responseObject.shouldWrapBody\n ? Object.assign(Object.assign({}, responseObject.headers), { body: responseObject.body }) : combinedHeadersAndBody;\n }\n}\n/**\n * Take a `FullOperationResponse` and turn it into a flat\n * response object to hand back to the consumer.\n * @param fullResponse - The processed response from the operation request\n * @param responseSpec - The response map from the OperationSpec\n *\n * @internal\n */\nfunction flattenResponse(fullResponse, responseSpec) {\n var _a, _b;\n const parsedHeaders = fullResponse.parsedHeaders;\n // head methods never have a body, but we return a boolean set to body property\n // to indicate presence/absence of the resource\n if (fullResponse.request.method === \"HEAD\") {\n return Object.assign(Object.assign({}, parsedHeaders), { body: fullResponse.parsedBody });\n }\n const bodyMapper = responseSpec && responseSpec.bodyMapper;\n const isNullable = Boolean(bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.nullable);\n const expectedBodyTypeName = bodyMapper === null || bodyMapper === void 0 ? void 0 : bodyMapper.type.name;\n /** If the body is asked for, we look at the expected body type to handle it */\n if (expectedBodyTypeName === \"Stream\") {\n return Object.assign(Object.assign({}, parsedHeaders), { blobBody: fullResponse.blobBody, readableStreamBody: fullResponse.readableStreamBody });\n }\n const modelProperties = (expectedBodyTypeName === \"Composite\" &&\n bodyMapper.type.modelProperties) ||\n {};\n const isPageableResponse = Object.keys(modelProperties).some((k) => modelProperties[k].serializedName === \"\");\n if (expectedBodyTypeName === \"Sequence\" || isPageableResponse) {\n const arrayResponse = (_a = fullResponse.parsedBody) !== null && _a !== void 0 ? _a : [];\n for (const key of Object.keys(modelProperties)) {\n if (modelProperties[key].serializedName) {\n arrayResponse[key] = (_b = fullResponse.parsedBody) === null || _b === void 0 ? void 0 : _b[key];\n }\n }\n if (parsedHeaders) {\n for (const key of Object.keys(parsedHeaders)) {\n arrayResponse[key] = parsedHeaders[key];\n }\n }\n return isNullable &&\n !fullResponse.parsedBody &&\n !parsedHeaders &&\n Object.getOwnPropertyNames(modelProperties).length === 0\n ? null\n : arrayResponse;\n }\n return handleNullableResponseAndWrappableBody({\n body: fullResponse.parsedBody,\n headers: parsedHeaders,\n hasNullableType: isNullable,\n shouldWrapBody: isPrimitiveBody(fullResponse.parsedBody, expectedBodyTypeName),\n });\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nclass SerializerImpl {\n constructor(modelMappers = {}, isXML = false) {\n this.modelMappers = modelMappers;\n this.isXML = isXML;\n }\n /**\n * @deprecated Removing the constraints validation on client side.\n */\n validateConstraints(mapper, value, objectName) {\n const failValidation = (constraintName, constraintValue) => {\n throw new Error(`\"${objectName}\" with value \"${value}\" should satisfy the constraint \"${constraintName}\": ${constraintValue}.`);\n };\n if (mapper.constraints && value !== undefined && value !== null) {\n const { ExclusiveMaximum, ExclusiveMinimum, InclusiveMaximum, InclusiveMinimum, MaxItems, MaxLength, MinItems, MinLength, MultipleOf, Pattern, UniqueItems, } = mapper.constraints;\n if (ExclusiveMaximum !== undefined && value >= ExclusiveMaximum) {\n failValidation(\"ExclusiveMaximum\", ExclusiveMaximum);\n }\n if (ExclusiveMinimum !== undefined && value <= ExclusiveMinimum) {\n failValidation(\"ExclusiveMinimum\", ExclusiveMinimum);\n }\n if (InclusiveMaximum !== undefined && value > InclusiveMaximum) {\n failValidation(\"InclusiveMaximum\", InclusiveMaximum);\n }\n if (InclusiveMinimum !== undefined && value < InclusiveMinimum) {\n failValidation(\"InclusiveMinimum\", InclusiveMinimum);\n }\n if (MaxItems !== undefined && value.length > MaxItems) {\n failValidation(\"MaxItems\", MaxItems);\n }\n if (MaxLength !== undefined && value.length > MaxLength) {\n failValidation(\"MaxLength\", MaxLength);\n }\n if (MinItems !== undefined && value.length < MinItems) {\n failValidation(\"MinItems\", MinItems);\n }\n if (MinLength !== undefined && value.length < MinLength) {\n failValidation(\"MinLength\", MinLength);\n }\n if (MultipleOf !== undefined && value % MultipleOf !== 0) {\n failValidation(\"MultipleOf\", MultipleOf);\n }\n if (Pattern) {\n const pattern = typeof Pattern === \"string\" ? new RegExp(Pattern) : Pattern;\n if (typeof value !== \"string\" || value.match(pattern) === null) {\n failValidation(\"Pattern\", Pattern);\n }\n }\n if (UniqueItems &&\n value.some((item, i, ar) => ar.indexOf(item) !== i)) {\n failValidation(\"UniqueItems\", UniqueItems);\n }\n }\n }\n /**\n * Serialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param object - A valid Javascript object to be serialized\n *\n * @param objectName - Name of the serialized object\n *\n * @param options - additional options to serialization\n *\n * @returns A valid serialized Javascript object\n */\n serialize(mapper, object, objectName, options = { xml: {} }) {\n var _a, _b, _c;\n const updatedOptions = {\n xml: {\n rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n },\n };\n let payload = {};\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Sequence$/i) !== null) {\n payload = [];\n }\n if (mapper.isConstant) {\n object = mapper.defaultValue;\n }\n // This table of allowed values should help explain\n // the mapper.required and mapper.nullable properties.\n // X means \"neither undefined or null are allowed\".\n // || required\n // || true | false\n // nullable || ==========================\n // true || null | undefined/null\n // false || X | undefined\n // undefined || X | undefined/null\n const { required, nullable } = mapper;\n if (required && nullable && object === undefined) {\n throw new Error(`${objectName} cannot be undefined.`);\n }\n if (required && !nullable && (object === undefined || object === null)) {\n throw new Error(`${objectName} cannot be null or undefined.`);\n }\n if (!required && nullable === false && object === null) {\n throw new Error(`${objectName} cannot be null.`);\n }\n if (object === undefined || object === null) {\n payload = object;\n }\n else {\n if (mapperType.match(/^any$/i) !== null) {\n payload = object;\n }\n else if (mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i) !== null) {\n payload = serializeBasicTypes(mapperType, objectName, object);\n }\n else if (mapperType.match(/^Enum$/i) !== null) {\n const enumMapper = mapper;\n payload = serializeEnumType(objectName, enumMapper.type.allowedValues, object);\n }\n else if (mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i) !== null) {\n payload = serializeDateTypes(mapperType, object, objectName);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = serializeByteArrayType(objectName, object);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = serializeBase64UrlType(objectName, object);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = serializeSequenceType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = serializeDictionaryType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n else if (mapperType.match(/^Composite$/i) !== null) {\n payload = serializeCompositeType(this, mapper, object, objectName, Boolean(this.isXML), updatedOptions);\n }\n }\n return payload;\n }\n /**\n * Deserialize the given object based on its metadata defined in the mapper\n *\n * @param mapper - The mapper which defines the metadata of the serializable object\n *\n * @param responseBody - A valid Javascript entity to be deserialized\n *\n * @param objectName - Name of the deserialized object\n *\n * @param options - Controls behavior of XML parser and builder.\n *\n * @returns A valid deserialized Javascript object\n */\n deserialize(mapper, responseBody, objectName, options = { xml: {} }) {\n var _a, _b, _c, _d;\n const updatedOptions = {\n xml: {\n rootName: (_a = options.xml.rootName) !== null && _a !== void 0 ? _a : \"\",\n includeRoot: (_b = options.xml.includeRoot) !== null && _b !== void 0 ? _b : false,\n xmlCharKey: (_c = options.xml.xmlCharKey) !== null && _c !== void 0 ? _c : XML_CHARKEY,\n },\n ignoreUnknownProperties: (_d = options.ignoreUnknownProperties) !== null && _d !== void 0 ? _d : false,\n };\n if (responseBody === undefined || responseBody === null) {\n if (this.isXML && mapper.type.name === \"Sequence\" && !mapper.xmlIsWrapped) {\n // Edge case for empty XML non-wrapped lists. xml2js can't distinguish\n // between the list being empty versus being missing,\n // so let's do the more user-friendly thing and return an empty list.\n responseBody = [];\n }\n // specifically check for undefined as default value can be a falsey value `0, \"\", false, null`\n if (mapper.defaultValue !== undefined) {\n responseBody = mapper.defaultValue;\n }\n return responseBody;\n }\n let payload;\n const mapperType = mapper.type.name;\n if (!objectName) {\n objectName = mapper.serializedName;\n }\n if (mapperType.match(/^Composite$/i) !== null) {\n payload = deserializeCompositeType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else {\n if (this.isXML) {\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n /**\n * If the mapper specifies this as a non-composite type value but the responseBody contains\n * both header (\"$\" i.e., XML_ATTRKEY) and body (\"#\" i.e., XML_CHARKEY) properties,\n * then just reduce the responseBody value to the body (\"#\" i.e., XML_CHARKEY) property.\n */\n if (responseBody[XML_ATTRKEY] !== undefined && responseBody[xmlCharKey] !== undefined) {\n responseBody = responseBody[xmlCharKey];\n }\n }\n if (mapperType.match(/^Number$/i) !== null) {\n payload = parseFloat(responseBody);\n if (isNaN(payload)) {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^Boolean$/i) !== null) {\n if (responseBody === \"true\") {\n payload = true;\n }\n else if (responseBody === \"false\") {\n payload = false;\n }\n else {\n payload = responseBody;\n }\n }\n else if (mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i) !== null) {\n payload = responseBody;\n }\n else if (mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i) !== null) {\n payload = new Date(responseBody);\n }\n else if (mapperType.match(/^UnixTime$/i) !== null) {\n payload = unixTimeToDate(responseBody);\n }\n else if (mapperType.match(/^ByteArray$/i) !== null) {\n payload = decodeString(responseBody);\n }\n else if (mapperType.match(/^Base64Url$/i) !== null) {\n payload = base64UrlToByteArray(responseBody);\n }\n else if (mapperType.match(/^Sequence$/i) !== null) {\n payload = deserializeSequenceType(this, mapper, responseBody, objectName, updatedOptions);\n }\n else if (mapperType.match(/^Dictionary$/i) !== null) {\n payload = deserializeDictionaryType(this, mapper, responseBody, objectName, updatedOptions);\n }\n }\n if (mapper.isConstant) {\n payload = mapper.defaultValue;\n }\n return payload;\n }\n}\n/**\n * Method that creates and returns a Serializer.\n * @param modelMappers - Known models to map\n * @param isXML - If XML should be supported\n */\nfunction createSerializer(modelMappers = {}, isXML = false) {\n return new SerializerImpl(modelMappers, isXML);\n}\nfunction trimEnd(str, ch) {\n let len = str.length;\n while (len - 1 >= 0 && str[len - 1] === ch) {\n --len;\n }\n return str.substr(0, len);\n}\nfunction bufferToBase64Url(buffer) {\n if (!buffer) {\n return undefined;\n }\n if (!(buffer instanceof Uint8Array)) {\n throw new Error(`Please provide an input of type Uint8Array for converting to Base64Url.`);\n }\n // Uint8Array to Base64.\n const str = encodeByteArray(buffer);\n // Base64 to Base64Url.\n return trimEnd(str, \"=\").replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n}\nfunction base64UrlToByteArray(str) {\n if (!str) {\n return undefined;\n }\n if (str && typeof str.valueOf() !== \"string\") {\n throw new Error(\"Please provide an input of type string for converting to Uint8Array\");\n }\n // Base64Url to Base64.\n str = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n // Base64 to Uint8Array.\n return decodeString(str);\n}\nfunction splitSerializeName(prop) {\n const classes = [];\n let partialclass = \"\";\n if (prop) {\n const subwords = prop.split(\".\");\n for (const item of subwords) {\n if (item.charAt(item.length - 1) === \"\\\\\") {\n partialclass += item.substr(0, item.length - 1) + \".\";\n }\n else {\n partialclass += item;\n classes.push(partialclass);\n partialclass = \"\";\n }\n }\n }\n return classes;\n}\nfunction dateToUnixTime(d) {\n if (!d) {\n return undefined;\n }\n if (typeof d.valueOf() === \"string\") {\n d = new Date(d);\n }\n return Math.floor(d.getTime() / 1000);\n}\nfunction unixTimeToDate(n) {\n if (!n) {\n return undefined;\n }\n return new Date(n * 1000);\n}\nfunction serializeBasicTypes(typeName, objectName, value) {\n if (value !== null && value !== undefined) {\n if (typeName.match(/^Number$/i) !== null) {\n if (typeof value !== \"number\") {\n throw new Error(`${objectName} with value ${value} must be of type number.`);\n }\n }\n else if (typeName.match(/^String$/i) !== null) {\n if (typeof value.valueOf() !== \"string\") {\n throw new Error(`${objectName} with value \"${value}\" must be of type string.`);\n }\n }\n else if (typeName.match(/^Uuid$/i) !== null) {\n if (!(typeof value.valueOf() === \"string\" && isValidUuid(value))) {\n throw new Error(`${objectName} with value \"${value}\" must be of type string and a valid uuid.`);\n }\n }\n else if (typeName.match(/^Boolean$/i) !== null) {\n if (typeof value !== \"boolean\") {\n throw new Error(`${objectName} with value ${value} must be of type boolean.`);\n }\n }\n else if (typeName.match(/^Stream$/i) !== null) {\n const objectType = typeof value;\n if (objectType !== \"string\" &&\n typeof value.pipe !== \"function\" && // NodeJS.ReadableStream\n typeof value.tee !== \"function\" && // browser ReadableStream\n !(value instanceof ArrayBuffer) &&\n !ArrayBuffer.isView(value) &&\n // File objects count as a type of Blob, so we want to use instanceof explicitly\n !((typeof Blob === \"function\" || typeof Blob === \"object\") && value instanceof Blob) &&\n objectType !== \"function\") {\n throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`);\n }\n }\n }\n return value;\n}\nfunction serializeEnumType(objectName, allowedValues, value) {\n if (!allowedValues) {\n throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);\n }\n const isPresent = allowedValues.some((item) => {\n if (typeof item.valueOf() === \"string\") {\n return item.toLowerCase() === value.toLowerCase();\n }\n return item === value;\n });\n if (!isPresent) {\n throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);\n }\n return value;\n}\nfunction serializeByteArrayType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = encodeByteArray(value);\n }\n return value;\n}\nfunction serializeBase64UrlType(objectName, value) {\n if (value !== undefined && value !== null) {\n if (!(value instanceof Uint8Array)) {\n throw new Error(`${objectName} must be of type Uint8Array.`);\n }\n value = bufferToBase64Url(value);\n }\n return value;\n}\nfunction serializeDateTypes(typeName, value, objectName) {\n if (value !== undefined && value !== null) {\n if (typeName.match(/^Date$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value =\n value instanceof Date\n ? value.toISOString().substring(0, 10)\n : new Date(value).toISOString().substring(0, 10);\n }\n else if (typeName.match(/^DateTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);\n }\n value = value instanceof Date ? value.toISOString() : new Date(value).toISOString();\n }\n else if (typeName.match(/^DateTimeRfc1123$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);\n }\n value = value instanceof Date ? value.toUTCString() : new Date(value).toUTCString();\n }\n else if (typeName.match(/^UnixTime$/i) !== null) {\n if (!(value instanceof Date ||\n (typeof value.valueOf() === \"string\" && !isNaN(Date.parse(value))))) {\n throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format ` +\n `for it to be serialized in UnixTime/Epoch format.`);\n }\n value = dateToUnixTime(value);\n }\n else if (typeName.match(/^TimeSpan$/i) !== null) {\n if (!isDuration(value)) {\n throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was \"${value}\".`);\n }\n }\n }\n return value;\n}\nfunction serializeSequenceType(serializer, mapper, object, objectName, isXml, options) {\n var _a;\n if (!Array.isArray(object)) {\n throw new Error(`${objectName} must be of type Array.`);\n }\n let elementType = mapper.type.element;\n if (!elementType || typeof elementType !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (elementType.type.name === \"Composite\" && elementType.type.className) {\n elementType = (_a = serializer.modelMappers[elementType.type.className]) !== null && _a !== void 0 ? _a : elementType;\n }\n const tempArray = [];\n for (let i = 0; i < object.length; i++) {\n const serializedValue = serializer.serialize(elementType, object[i], objectName, options);\n if (isXml && elementType.xmlNamespace) {\n const xmlnsKey = elementType.xmlNamespacePrefix\n ? `xmlns:${elementType.xmlNamespacePrefix}`\n : \"xmlns\";\n if (elementType.type.name === \"Composite\") {\n tempArray[i] = Object.assign({}, serializedValue);\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n else {\n tempArray[i] = {};\n tempArray[i][options.xml.xmlCharKey] = serializedValue;\n tempArray[i][XML_ATTRKEY] = { [xmlnsKey]: elementType.xmlNamespace };\n }\n }\n else {\n tempArray[i] = serializedValue;\n }\n }\n return tempArray;\n}\nfunction serializeDictionaryType(serializer, mapper, object, objectName, isXml, options) {\n if (typeof object !== \"object\") {\n throw new Error(`${objectName} must be of type object.`);\n }\n const valueType = mapper.type.value;\n if (!valueType || typeof valueType !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}.`);\n }\n const tempDictionary = {};\n for (const key of Object.keys(object)) {\n const serializedValue = serializer.serialize(valueType, object[key], objectName, options);\n // If the element needs an XML namespace we need to add it within the $ property\n tempDictionary[key] = getXmlObjectValue(valueType, serializedValue, isXml, options);\n }\n // Add the namespace to the root element if needed\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix ? `xmlns:${mapper.xmlNamespacePrefix}` : \"xmlns\";\n const result = tempDictionary;\n result[XML_ATTRKEY] = { [xmlnsKey]: mapper.xmlNamespace };\n return result;\n }\n return tempDictionary;\n}\n/**\n * Resolves the additionalProperties property from a referenced mapper\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveAdditionalProperties(serializer, mapper, objectName) {\n const additionalProperties = mapper.type.additionalProperties;\n if (!additionalProperties && mapper.type.className) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n return modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.additionalProperties;\n }\n return additionalProperties;\n}\n/**\n * Finds the mapper referenced by className\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n * @param objectName - name of the object being serialized\n */\nfunction resolveReferencedMapper(serializer, mapper, objectName) {\n const className = mapper.type.className;\n if (!className) {\n throw new Error(`Class name for model \"${objectName}\" is not provided in the mapper \"${JSON.stringify(mapper, undefined, 2)}\".`);\n }\n return serializer.modelMappers[className];\n}\n/**\n * Resolves a composite mapper's modelProperties.\n * @param serializer - the serializer containing the entire set of mappers\n * @param mapper - the composite mapper to resolve\n */\nfunction resolveModelProperties(serializer, mapper, objectName) {\n let modelProps = mapper.type.modelProperties;\n if (!modelProps) {\n const modelMapper = resolveReferencedMapper(serializer, mapper, objectName);\n if (!modelMapper) {\n throw new Error(`mapper() cannot be null or undefined for model \"${mapper.type.className}\".`);\n }\n modelProps = modelMapper === null || modelMapper === void 0 ? void 0 : modelMapper.type.modelProperties;\n if (!modelProps) {\n throw new Error(`modelProperties cannot be null or undefined in the ` +\n `mapper \"${JSON.stringify(modelMapper)}\" of type \"${mapper.type.className}\" for object \"${objectName}\".`);\n }\n }\n return modelProps;\n}\nfunction serializeCompositeType(serializer, mapper, object, objectName, isXml, options) {\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, object, \"clientName\");\n }\n if (object !== undefined && object !== null) {\n const payload = {};\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n if (propertyMapper.readOnly) {\n continue;\n }\n let propName;\n let parentObject = payload;\n if (serializer.isXML) {\n if (propertyMapper.xmlIsWrapped) {\n propName = propertyMapper.xmlName;\n }\n else {\n propName = propertyMapper.xmlElementName || propertyMapper.xmlName;\n }\n }\n else {\n const paths = splitSerializeName(propertyMapper.serializedName);\n propName = paths.pop();\n for (const pathName of paths) {\n const childObject = parentObject[pathName];\n if ((childObject === undefined || childObject === null) &&\n ((object[key] !== undefined && object[key] !== null) ||\n propertyMapper.defaultValue !== undefined)) {\n parentObject[pathName] = {};\n }\n parentObject = parentObject[pathName];\n }\n }\n if (parentObject !== undefined && parentObject !== null) {\n if (isXml && mapper.xmlNamespace) {\n const xmlnsKey = mapper.xmlNamespacePrefix\n ? `xmlns:${mapper.xmlNamespacePrefix}`\n : \"xmlns\";\n parentObject[XML_ATTRKEY] = Object.assign(Object.assign({}, parentObject[XML_ATTRKEY]), { [xmlnsKey]: mapper.xmlNamespace });\n }\n const propertyObjectName = propertyMapper.serializedName !== \"\"\n ? objectName + \".\" + propertyMapper.serializedName\n : objectName;\n let toSerialize = object[key];\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator &&\n polymorphicDiscriminator.clientName === key &&\n (toSerialize === undefined || toSerialize === null)) {\n toSerialize = mapper.serializedName;\n }\n const serializedValue = serializer.serialize(propertyMapper, toSerialize, propertyObjectName, options);\n if (serializedValue !== undefined && propName !== undefined && propName !== null) {\n const value = getXmlObjectValue(propertyMapper, serializedValue, isXml, options);\n if (isXml && propertyMapper.xmlIsAttribute) {\n // XML_ATTRKEY, i.e., $ is the key attributes are kept under in xml2js.\n // This keeps things simple while preventing name collision\n // with names in user documents.\n parentObject[XML_ATTRKEY] = parentObject[XML_ATTRKEY] || {};\n parentObject[XML_ATTRKEY][propName] = serializedValue;\n }\n else if (isXml && propertyMapper.xmlIsWrapped) {\n parentObject[propName] = { [propertyMapper.xmlElementName]: value };\n }\n else {\n parentObject[propName] = value;\n }\n }\n }\n }\n const additionalPropertiesMapper = resolveAdditionalProperties(serializer, mapper, objectName);\n if (additionalPropertiesMapper) {\n const propNames = Object.keys(modelProps);\n for (const clientPropName in object) {\n const isAdditionalProperty = propNames.every((pn) => pn !== clientPropName);\n if (isAdditionalProperty) {\n payload[clientPropName] = serializer.serialize(additionalPropertiesMapper, object[clientPropName], objectName + '[\"' + clientPropName + '\"]', options);\n }\n }\n }\n return payload;\n }\n return object;\n}\nfunction getXmlObjectValue(propertyMapper, serializedValue, isXml, options) {\n if (!isXml || !propertyMapper.xmlNamespace) {\n return serializedValue;\n }\n const xmlnsKey = propertyMapper.xmlNamespacePrefix\n ? `xmlns:${propertyMapper.xmlNamespacePrefix}`\n : \"xmlns\";\n const xmlNamespace = { [xmlnsKey]: propertyMapper.xmlNamespace };\n if ([\"Composite\"].includes(propertyMapper.type.name)) {\n if (serializedValue[XML_ATTRKEY]) {\n return serializedValue;\n }\n else {\n const result = Object.assign({}, serializedValue);\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n }\n }\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = xmlNamespace;\n return result;\n}\nfunction isSpecialXmlProperty(propertyName, options) {\n return [XML_ATTRKEY, options.xml.xmlCharKey].includes(propertyName);\n}\nfunction deserializeCompositeType(serializer, mapper, responseBody, objectName, options) {\n var _a, _b;\n const xmlCharKey = (_a = options.xml.xmlCharKey) !== null && _a !== void 0 ? _a : XML_CHARKEY;\n if (getPolymorphicDiscriminatorRecursively(serializer, mapper)) {\n mapper = getPolymorphicMapper(serializer, mapper, responseBody, \"serializedName\");\n }\n const modelProps = resolveModelProperties(serializer, mapper, objectName);\n let instance = {};\n const handledPropertyNames = [];\n for (const key of Object.keys(modelProps)) {\n const propertyMapper = modelProps[key];\n const paths = splitSerializeName(modelProps[key].serializedName);\n handledPropertyNames.push(paths[0]);\n const { serializedName, xmlName, xmlElementName } = propertyMapper;\n let propertyObjectName = objectName;\n if (serializedName !== \"\" && serializedName !== undefined) {\n propertyObjectName = objectName + \".\" + serializedName;\n }\n const headerCollectionPrefix = propertyMapper.headerCollectionPrefix;\n if (headerCollectionPrefix) {\n const dictionary = {};\n for (const headerKey of Object.keys(responseBody)) {\n if (headerKey.startsWith(headerCollectionPrefix)) {\n dictionary[headerKey.substring(headerCollectionPrefix.length)] = serializer.deserialize(propertyMapper.type.value, responseBody[headerKey], propertyObjectName, options);\n }\n handledPropertyNames.push(headerKey);\n }\n instance[key] = dictionary;\n }\n else if (serializer.isXML) {\n if (propertyMapper.xmlIsAttribute && responseBody[XML_ATTRKEY]) {\n instance[key] = serializer.deserialize(propertyMapper, responseBody[XML_ATTRKEY][xmlName], propertyObjectName, options);\n }\n else if (propertyMapper.xmlIsMsText) {\n if (responseBody[xmlCharKey] !== undefined) {\n instance[key] = responseBody[xmlCharKey];\n }\n else if (typeof responseBody === \"string\") {\n // The special case where xml parser parses \"content\" into JSON of\n // `{ name: \"content\"}` instead of `{ name: { \"_\": \"content\" }}`\n instance[key] = responseBody;\n }\n }\n else {\n const propertyName = xmlElementName || xmlName || serializedName;\n if (propertyMapper.xmlIsWrapped) {\n /* a list of wrapped by \n For the xml example below\n \n ...\n ...\n \n the responseBody has\n {\n Cors: {\n CorsRule: [{...}, {...}]\n }\n }\n xmlName is \"Cors\" and xmlElementName is\"CorsRule\".\n */\n const wrapped = responseBody[xmlName];\n const elementList = (_b = wrapped === null || wrapped === void 0 ? void 0 : wrapped[xmlElementName]) !== null && _b !== void 0 ? _b : [];\n instance[key] = serializer.deserialize(propertyMapper, elementList, propertyObjectName, options);\n handledPropertyNames.push(xmlName);\n }\n else {\n const property = responseBody[propertyName];\n instance[key] = serializer.deserialize(propertyMapper, property, propertyObjectName, options);\n handledPropertyNames.push(propertyName);\n }\n }\n }\n else {\n // deserialize the property if it is present in the provided responseBody instance\n let propertyInstance;\n let res = responseBody;\n // traversing the object step by step.\n let steps = 0;\n for (const item of paths) {\n if (!res)\n break;\n steps++;\n res = res[item];\n }\n // only accept null when reaching the last position of object otherwise it would be undefined\n if (res === null && steps < paths.length) {\n res = undefined;\n }\n propertyInstance = res;\n const polymorphicDiscriminator = mapper.type.polymorphicDiscriminator;\n // checking that the model property name (key)(ex: \"fishtype\") and the\n // clientName of the polymorphicDiscriminator {metadata} (ex: \"fishtype\")\n // instead of the serializedName of the polymorphicDiscriminator (ex: \"fish.type\")\n // is a better approach. The generator is not consistent with escaping '\\.' in the\n // serializedName of the property (ex: \"fish\\.type\") that is marked as polymorphic discriminator\n // and the serializedName of the metadata polymorphicDiscriminator (ex: \"fish.type\"). However,\n // the clientName transformation of the polymorphicDiscriminator (ex: \"fishtype\") and\n // the transformation of model property name (ex: \"fishtype\") is done consistently.\n // Hence, it is a safer bet to rely on the clientName of the polymorphicDiscriminator.\n if (polymorphicDiscriminator &&\n key === polymorphicDiscriminator.clientName &&\n (propertyInstance === undefined || propertyInstance === null)) {\n propertyInstance = mapper.serializedName;\n }\n let serializedValue;\n // paging\n if (Array.isArray(responseBody[key]) && modelProps[key].serializedName === \"\") {\n propertyInstance = responseBody[key];\n const arrayInstance = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n // Copy over any properties that have already been added into the instance, where they do\n // not exist on the newly de-serialized array\n for (const [k, v] of Object.entries(instance)) {\n if (!Object.prototype.hasOwnProperty.call(arrayInstance, k)) {\n arrayInstance[k] = v;\n }\n }\n instance = arrayInstance;\n }\n else if (propertyInstance !== undefined || propertyMapper.defaultValue !== undefined) {\n serializedValue = serializer.deserialize(propertyMapper, propertyInstance, propertyObjectName, options);\n instance[key] = serializedValue;\n }\n }\n }\n const additionalPropertiesMapper = mapper.type.additionalProperties;\n if (additionalPropertiesMapper) {\n const isAdditionalProperty = (responsePropName) => {\n for (const clientPropName in modelProps) {\n const paths = splitSerializeName(modelProps[clientPropName].serializedName);\n if (paths[0] === responsePropName) {\n return false;\n }\n }\n return true;\n };\n for (const responsePropName in responseBody) {\n if (isAdditionalProperty(responsePropName)) {\n instance[responsePropName] = serializer.deserialize(additionalPropertiesMapper, responseBody[responsePropName], objectName + '[\"' + responsePropName + '\"]', options);\n }\n }\n }\n else if (responseBody && !options.ignoreUnknownProperties) {\n for (const key of Object.keys(responseBody)) {\n if (instance[key] === undefined &&\n !handledPropertyNames.includes(key) &&\n !isSpecialXmlProperty(key, options)) {\n instance[key] = responseBody[key];\n }\n }\n }\n return instance;\n}\nfunction deserializeDictionaryType(serializer, mapper, responseBody, objectName, options) {\n /* jshint validthis: true */\n const value = mapper.type.value;\n if (!value || typeof value !== \"object\") {\n throw new Error(`\"value\" metadata for a Dictionary must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n const tempDictionary = {};\n for (const key of Object.keys(responseBody)) {\n tempDictionary[key] = serializer.deserialize(value, responseBody[key], objectName, options);\n }\n return tempDictionary;\n }\n return responseBody;\n}\nfunction deserializeSequenceType(serializer, mapper, responseBody, objectName, options) {\n var _a;\n let element = mapper.type.element;\n if (!element || typeof element !== \"object\") {\n throw new Error(`element\" metadata for an Array must be defined in the ` +\n `mapper and it must of type \"object\" in ${objectName}`);\n }\n if (responseBody) {\n if (!Array.isArray(responseBody)) {\n // xml2js will interpret a single element array as just the element, so force it to be an array\n responseBody = [responseBody];\n }\n // Quirk: Composite mappers referenced by `element` might\n // not have *all* properties declared (like uberParent),\n // so let's try to look up the full definition by name.\n if (element.type.name === \"Composite\" && element.type.className) {\n element = (_a = serializer.modelMappers[element.type.className]) !== null && _a !== void 0 ? _a : element;\n }\n const tempArray = [];\n for (let i = 0; i < responseBody.length; i++) {\n tempArray[i] = serializer.deserialize(element, responseBody[i], `${objectName}[${i}]`, options);\n }\n return tempArray;\n }\n return responseBody;\n}\nfunction getIndexDiscriminator(discriminators, discriminatorValue, typeName) {\n const typeNamesToCheck = [typeName];\n while (typeNamesToCheck.length) {\n const currentName = typeNamesToCheck.shift();\n const indexDiscriminator = discriminatorValue === currentName\n ? discriminatorValue\n : currentName + \".\" + discriminatorValue;\n if (Object.prototype.hasOwnProperty.call(discriminators, indexDiscriminator)) {\n return discriminators[indexDiscriminator];\n }\n else {\n for (const [name, mapper] of Object.entries(discriminators)) {\n if (name.startsWith(currentName + \".\") &&\n mapper.type.uberParent === currentName &&\n mapper.type.className) {\n typeNamesToCheck.push(mapper.type.className);\n }\n }\n }\n }\n return undefined;\n}\nfunction getPolymorphicMapper(serializer, mapper, object, polymorphicPropertyName) {\n var _a;\n const polymorphicDiscriminator = getPolymorphicDiscriminatorRecursively(serializer, mapper);\n if (polymorphicDiscriminator) {\n let discriminatorName = polymorphicDiscriminator[polymorphicPropertyName];\n if (discriminatorName) {\n // The serializedName might have \\\\, which we just want to ignore\n if (polymorphicPropertyName === \"serializedName\") {\n discriminatorName = discriminatorName.replace(/\\\\/gi, \"\");\n }\n const discriminatorValue = object[discriminatorName];\n const typeName = (_a = mapper.type.uberParent) !== null && _a !== void 0 ? _a : mapper.type.className;\n if (typeof discriminatorValue === \"string\" && typeName) {\n const polymorphicMapper = getIndexDiscriminator(serializer.modelMappers.discriminators, discriminatorValue, typeName);\n if (polymorphicMapper) {\n mapper = polymorphicMapper;\n }\n }\n }\n }\n return mapper;\n}\nfunction getPolymorphicDiscriminatorRecursively(serializer, mapper) {\n return (mapper.type.polymorphicDiscriminator ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.uberParent) ||\n getPolymorphicDiscriminatorSafely(serializer, mapper.type.className));\n}\nfunction getPolymorphicDiscriminatorSafely(serializer, typeName) {\n return (typeName &&\n serializer.modelMappers[typeName] &&\n serializer.modelMappers[typeName].type.polymorphicDiscriminator);\n}\n/**\n * Known types of Mappers\n */\nconst MapperTypeNames = {\n Base64Url: \"Base64Url\",\n Boolean: \"Boolean\",\n ByteArray: \"ByteArray\",\n Composite: \"Composite\",\n Date: \"Date\",\n DateTime: \"DateTime\",\n DateTimeRfc1123: \"DateTimeRfc1123\",\n Dictionary: \"Dictionary\",\n Enum: \"Enum\",\n Number: \"Number\",\n Object: \"Object\",\n Sequence: \"Sequence\",\n String: \"String\",\n Stream: \"Stream\",\n TimeSpan: \"TimeSpan\",\n UnixTime: \"UnixTime\",\n};\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Browser-only implementation of the module's state. The browser esm variant will not load the commonjs state, so we do not need to share state between the two.\n */\nconst state = {\n operationRequestMap: new WeakMap(),\n};\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * @internal\n * Retrieves the value to use for a given operation argument\n * @param operationArguments - The arguments passed from the generated client\n * @param parameter - The parameter description\n * @param fallbackObject - If something isn't found in the arguments bag, look here.\n * Generally used to look at the service client properties.\n */\nfunction getOperationArgumentValueFromParameter(operationArguments, parameter, fallbackObject) {\n let parameterPath = parameter.parameterPath;\n const parameterMapper = parameter.mapper;\n let value;\n if (typeof parameterPath === \"string\") {\n parameterPath = [parameterPath];\n }\n if (Array.isArray(parameterPath)) {\n if (parameterPath.length > 0) {\n if (parameterMapper.isConstant) {\n value = parameterMapper.defaultValue;\n }\n else {\n let propertySearchResult = getPropertyFromParameterPath(operationArguments, parameterPath);\n if (!propertySearchResult.propertyFound && fallbackObject) {\n propertySearchResult = getPropertyFromParameterPath(fallbackObject, parameterPath);\n }\n let useDefaultValue = false;\n if (!propertySearchResult.propertyFound) {\n useDefaultValue =\n parameterMapper.required ||\n (parameterPath[0] === \"options\" && parameterPath.length === 2);\n }\n value = useDefaultValue ? parameterMapper.defaultValue : propertySearchResult.propertyValue;\n }\n }\n }\n else {\n if (parameterMapper.required) {\n value = {};\n }\n for (const propertyName in parameterPath) {\n const propertyMapper = parameterMapper.type.modelProperties[propertyName];\n const propertyPath = parameterPath[propertyName];\n const propertyValue = getOperationArgumentValueFromParameter(operationArguments, {\n parameterPath: propertyPath,\n mapper: propertyMapper,\n }, fallbackObject);\n if (propertyValue !== undefined) {\n if (!value) {\n value = {};\n }\n value[propertyName] = propertyValue;\n }\n }\n }\n return value;\n}\nfunction getPropertyFromParameterPath(parent, parameterPath) {\n const result = { propertyFound: false };\n let i = 0;\n for (; i < parameterPath.length; ++i) {\n const parameterPathPart = parameterPath[i];\n // Make sure to check inherited properties too, so don't use hasOwnProperty().\n if (parent && parameterPathPart in parent) {\n parent = parent[parameterPathPart];\n }\n else {\n break;\n }\n }\n if (i === parameterPath.length) {\n result.propertyValue = parent;\n result.propertyFound = true;\n }\n return result;\n}\nconst originalRequestSymbol = Symbol.for(\"@azure/core-client original request\");\nfunction hasOriginalRequest(request) {\n return originalRequestSymbol in request;\n}\nfunction getOperationRequestInfo(request) {\n if (hasOriginalRequest(request)) {\n return getOperationRequestInfo(request[originalRequestSymbol]);\n }\n let info = state.operationRequestMap.get(request);\n if (!info) {\n info = {};\n state.operationRequestMap.set(request, info);\n }\n return info;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst defaultJsonContentTypes = [\"application/json\", \"text/json\"];\nconst defaultXmlContentTypes = [\"application/xml\", \"application/atom+xml\"];\n/**\n * The programmatic identifier of the deserializationPolicy.\n */\nconst deserializationPolicyName = \"deserializationPolicy\";\n/**\n * This policy handles parsing out responses according to OperationSpecs on the request.\n */\nfunction deserializationPolicy(options = {}) {\n var _a, _b, _c, _d, _e, _f, _g;\n const jsonContentTypes = (_b = (_a = options.expectedContentTypes) === null || _a === void 0 ? void 0 : _a.json) !== null && _b !== void 0 ? _b : defaultJsonContentTypes;\n const xmlContentTypes = (_d = (_c = options.expectedContentTypes) === null || _c === void 0 ? void 0 : _c.xml) !== null && _d !== void 0 ? _d : defaultXmlContentTypes;\n const parseXML = options.parseXML;\n const serializerOptions = options.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: (_e = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _e !== void 0 ? _e : \"\",\n includeRoot: (_f = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _f !== void 0 ? _f : false,\n xmlCharKey: (_g = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _g !== void 0 ? _g : XML_CHARKEY,\n },\n };\n return {\n name: deserializationPolicyName,\n async sendRequest(request, next) {\n const response = await next(request);\n return deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, updatedOptions, parseXML);\n },\n };\n}\nfunction getOperationResponseMap(parsedResponse) {\n let result;\n const request = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n if (operationSpec) {\n if (!(operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter)) {\n result = operationSpec.responses[parsedResponse.status];\n }\n else {\n result = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationResponseGetter(operationSpec, parsedResponse);\n }\n }\n return result;\n}\nfunction shouldDeserializeResponse(parsedResponse) {\n const request = parsedResponse.request;\n const operationInfo = getOperationRequestInfo(request);\n const shouldDeserialize = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.shouldDeserialize;\n let result;\n if (shouldDeserialize === undefined) {\n result = true;\n }\n else if (typeof shouldDeserialize === \"boolean\") {\n result = shouldDeserialize;\n }\n else {\n result = shouldDeserialize(parsedResponse);\n }\n return result;\n}\nasync function deserializeResponseBody(jsonContentTypes, xmlContentTypes, response, options, parseXML) {\n const parsedResponse = await parse(jsonContentTypes, xmlContentTypes, response, options, parseXML);\n if (!shouldDeserializeResponse(parsedResponse)) {\n return parsedResponse;\n }\n const operationInfo = getOperationRequestInfo(parsedResponse.request);\n const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n if (!operationSpec || !operationSpec.responses) {\n return parsedResponse;\n }\n const responseSpec = getOperationResponseMap(parsedResponse);\n const { error, shouldReturnResponse } = handleErrorResponse(parsedResponse, operationSpec, responseSpec, options);\n if (error) {\n throw error;\n }\n else if (shouldReturnResponse) {\n return parsedResponse;\n }\n // An operation response spec does exist for current status code, so\n // use it to deserialize the response.\n if (responseSpec) {\n if (responseSpec.bodyMapper) {\n let valueToDeserialize = parsedResponse.parsedBody;\n if (operationSpec.isXML && responseSpec.bodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize =\n typeof valueToDeserialize === \"object\"\n ? valueToDeserialize[responseSpec.bodyMapper.xmlElementName]\n : [];\n }\n try {\n parsedResponse.parsedBody = operationSpec.serializer.deserialize(responseSpec.bodyMapper, valueToDeserialize, \"operationRes.parsedBody\", options);\n }\n catch (deserializeError) {\n const restError = new RestError(`Error ${deserializeError} occurred in deserializing the responseBody - ${parsedResponse.bodyAsText}`, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n throw restError;\n }\n }\n else if (operationSpec.httpMethod === \"HEAD\") {\n // head methods never have a body, but we return a boolean to indicate presence/absence of the resource\n parsedResponse.parsedBody = response.status >= 200 && response.status < 300;\n }\n if (responseSpec.headersMapper) {\n parsedResponse.parsedHeaders = operationSpec.serializer.deserialize(responseSpec.headersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\", { xml: {}, ignoreUnknownProperties: true });\n }\n }\n return parsedResponse;\n}\nfunction isOperationSpecEmpty(operationSpec) {\n const expectedStatusCodes = Object.keys(operationSpec.responses);\n return (expectedStatusCodes.length === 0 ||\n (expectedStatusCodes.length === 1 && expectedStatusCodes[0] === \"default\"));\n}\nfunction handleErrorResponse(parsedResponse, operationSpec, responseSpec, options) {\n var _a;\n const isSuccessByStatus = 200 <= parsedResponse.status && parsedResponse.status < 300;\n const isExpectedStatusCode = isOperationSpecEmpty(operationSpec)\n ? isSuccessByStatus\n : !!responseSpec;\n if (isExpectedStatusCode) {\n if (responseSpec) {\n if (!responseSpec.isError) {\n return { error: null, shouldReturnResponse: false };\n }\n }\n else {\n return { error: null, shouldReturnResponse: false };\n }\n }\n const errorResponseSpec = responseSpec !== null && responseSpec !== void 0 ? responseSpec : operationSpec.responses.default;\n const initialErrorMessage = ((_a = parsedResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(parsedResponse.status))\n ? `Unexpected status code: ${parsedResponse.status}`\n : parsedResponse.bodyAsText;\n const error = new RestError(initialErrorMessage, {\n statusCode: parsedResponse.status,\n request: parsedResponse.request,\n response: parsedResponse,\n });\n // If the item failed but there's no error spec or default spec to deserialize the error,\n // we should fail so we just throw the parsed response\n if (!errorResponseSpec) {\n throw error;\n }\n const defaultBodyMapper = errorResponseSpec.bodyMapper;\n const defaultHeadersMapper = errorResponseSpec.headersMapper;\n try {\n // If error response has a body, try to deserialize it using default body mapper.\n // Then try to extract error code & message from it\n if (parsedResponse.parsedBody) {\n const parsedBody = parsedResponse.parsedBody;\n let deserializedError;\n if (defaultBodyMapper) {\n let valueToDeserialize = parsedBody;\n if (operationSpec.isXML && defaultBodyMapper.type.name === MapperTypeNames.Sequence) {\n valueToDeserialize = [];\n const elementName = defaultBodyMapper.xmlElementName;\n if (typeof parsedBody === \"object\" && elementName) {\n valueToDeserialize = parsedBody[elementName];\n }\n }\n deserializedError = operationSpec.serializer.deserialize(defaultBodyMapper, valueToDeserialize, \"error.response.parsedBody\", options);\n }\n const internalError = parsedBody.error || deserializedError || parsedBody;\n error.code = internalError.code;\n if (internalError.message) {\n error.message = internalError.message;\n }\n if (defaultBodyMapper) {\n error.response.parsedBody = deserializedError;\n }\n }\n // If error response has headers, try to deserialize it using default header mapper\n if (parsedResponse.headers && defaultHeadersMapper) {\n error.response.parsedHeaders =\n operationSpec.serializer.deserialize(defaultHeadersMapper, parsedResponse.headers.toJSON(), \"operationRes.parsedHeaders\");\n }\n }\n catch (defaultError) {\n error.message = `Error \"${defaultError.message}\" occurred in deserializing the responseBody - \"${parsedResponse.bodyAsText}\" for the default response.`;\n }\n return { error, shouldReturnResponse: false };\n}\nasync function parse(jsonContentTypes, xmlContentTypes, operationResponse, opts, parseXML) {\n var _a;\n if (!((_a = operationResponse.request.streamResponseStatusCodes) === null || _a === void 0 ? void 0 : _a.has(operationResponse.status)) &&\n operationResponse.bodyAsText) {\n const text = operationResponse.bodyAsText;\n const contentType = operationResponse.headers.get(\"Content-Type\") || \"\";\n const contentComponents = !contentType\n ? []\n : contentType.split(\";\").map((component) => component.toLowerCase());\n try {\n if (contentComponents.length === 0 ||\n contentComponents.some((component) => jsonContentTypes.indexOf(component) !== -1)) {\n operationResponse.parsedBody = JSON.parse(text);\n return operationResponse;\n }\n else if (contentComponents.some((component) => xmlContentTypes.indexOf(component) !== -1)) {\n if (!parseXML) {\n throw new Error(\"Parsing XML not supported.\");\n }\n const body = await parseXML(text, opts.xml);\n operationResponse.parsedBody = body;\n return operationResponse;\n }\n }\n catch (err) {\n const msg = `Error \"${err}\" occurred while parsing the response body - ${operationResponse.bodyAsText}.`;\n const errCode = err.code || RestError.PARSE_ERROR;\n const e = new RestError(msg, {\n code: errCode,\n statusCode: operationResponse.status,\n request: operationResponse.request,\n response: operationResponse,\n });\n throw e;\n }\n }\n return operationResponse;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Gets the list of status codes for streaming responses.\n * @internal\n */\nfunction getStreamingResponseStatusCodes(operationSpec) {\n const result = new Set();\n for (const statusCode in operationSpec.responses) {\n const operationResponse = operationSpec.responses[statusCode];\n if (operationResponse.bodyMapper &&\n operationResponse.bodyMapper.type.name === MapperTypeNames.Stream) {\n result.add(Number(statusCode));\n }\n }\n return result;\n}\n/**\n * Get the path to this parameter's value as a dotted string (a.b.c).\n * @param parameter - The parameter to get the path string for.\n * @returns The path to this parameter's value as a dotted string.\n * @internal\n */\nfunction getPathStringFromParameter(parameter) {\n const { parameterPath, mapper } = parameter;\n let result;\n if (typeof parameterPath === \"string\") {\n result = parameterPath;\n }\n else if (Array.isArray(parameterPath)) {\n result = parameterPath.join(\".\");\n }\n else {\n result = mapper.serializedName;\n }\n return result;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The programmatic identifier of the serializationPolicy.\n */\nconst serializationPolicyName = \"serializationPolicy\";\n/**\n * This policy handles assembling the request body and headers using\n * an OperationSpec and OperationArguments on the request.\n */\nfunction serializationPolicy(options = {}) {\n const stringifyXML = options.stringifyXML;\n return {\n name: serializationPolicyName,\n async sendRequest(request, next) {\n const operationInfo = getOperationRequestInfo(request);\n const operationSpec = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationSpec;\n const operationArguments = operationInfo === null || operationInfo === void 0 ? void 0 : operationInfo.operationArguments;\n if (operationSpec && operationArguments) {\n serializeHeaders(request, operationArguments, operationSpec);\n serializeRequestBody(request, operationArguments, operationSpec, stringifyXML);\n }\n return next(request);\n },\n };\n}\n/**\n * @internal\n */\nfunction serializeHeaders(request, operationArguments, operationSpec) {\n var _a, _b;\n if (operationSpec.headerParameters) {\n for (const headerParameter of operationSpec.headerParameters) {\n let headerValue = getOperationArgumentValueFromParameter(operationArguments, headerParameter);\n if ((headerValue !== null && headerValue !== undefined) || headerParameter.mapper.required) {\n headerValue = operationSpec.serializer.serialize(headerParameter.mapper, headerValue, getPathStringFromParameter(headerParameter));\n const headerCollectionPrefix = headerParameter.mapper\n .headerCollectionPrefix;\n if (headerCollectionPrefix) {\n for (const key of Object.keys(headerValue)) {\n request.headers.set(headerCollectionPrefix + key, headerValue[key]);\n }\n }\n else {\n request.headers.set(headerParameter.mapper.serializedName || getPathStringFromParameter(headerParameter), headerValue);\n }\n }\n }\n }\n const customHeaders = (_b = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.requestOptions) === null || _b === void 0 ? void 0 : _b.customHeaders;\n if (customHeaders) {\n for (const customHeaderName of Object.keys(customHeaders)) {\n request.headers.set(customHeaderName, customHeaders[customHeaderName]);\n }\n }\n}\n/**\n * @internal\n */\nfunction serializeRequestBody(request, operationArguments, operationSpec, stringifyXML = function () {\n throw new Error(\"XML serialization unsupported!\");\n}) {\n var _a, _b, _c, _d, _e;\n const serializerOptions = (_a = operationArguments.options) === null || _a === void 0 ? void 0 : _a.serializerOptions;\n const updatedOptions = {\n xml: {\n rootName: (_b = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.rootName) !== null && _b !== void 0 ? _b : \"\",\n includeRoot: (_c = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.includeRoot) !== null && _c !== void 0 ? _c : false,\n xmlCharKey: (_d = serializerOptions === null || serializerOptions === void 0 ? void 0 : serializerOptions.xml.xmlCharKey) !== null && _d !== void 0 ? _d : XML_CHARKEY,\n },\n };\n const xmlCharKey = updatedOptions.xml.xmlCharKey;\n if (operationSpec.requestBody && operationSpec.requestBody.mapper) {\n request.body = getOperationArgumentValueFromParameter(operationArguments, operationSpec.requestBody);\n const bodyMapper = operationSpec.requestBody.mapper;\n const { required, serializedName, xmlName, xmlElementName, xmlNamespace, xmlNamespacePrefix, nullable, } = bodyMapper;\n const typeName = bodyMapper.type.name;\n try {\n if ((request.body !== undefined && request.body !== null) ||\n (nullable && request.body === null) ||\n required) {\n const requestBodyParameterPathString = getPathStringFromParameter(operationSpec.requestBody);\n request.body = operationSpec.serializer.serialize(bodyMapper, request.body, requestBodyParameterPathString, updatedOptions);\n const isStream = typeName === MapperTypeNames.Stream;\n if (operationSpec.isXML) {\n const xmlnsKey = xmlNamespacePrefix ? `xmlns:${xmlNamespacePrefix}` : \"xmlns\";\n const value = getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, request.body, updatedOptions);\n if (typeName === MapperTypeNames.Sequence) {\n request.body = stringifyXML(prepareXMLRootList(value, xmlElementName || xmlName || serializedName, xmlnsKey, xmlNamespace), { rootName: xmlName || serializedName, xmlCharKey });\n }\n else if (!isStream) {\n request.body = stringifyXML(value, {\n rootName: xmlName || serializedName,\n xmlCharKey,\n });\n }\n }\n else if (typeName === MapperTypeNames.String &&\n (((_e = operationSpec.contentType) === null || _e === void 0 ? void 0 : _e.match(\"text/plain\")) || operationSpec.mediaType === \"text\")) {\n // the String serializer has validated that request body is a string\n // so just send the string.\n return;\n }\n else if (!isStream) {\n request.body = JSON.stringify(request.body);\n }\n }\n }\n catch (error) {\n throw new Error(`Error \"${error.message}\" occurred in serializing the payload - ${JSON.stringify(serializedName, undefined, \" \")}.`);\n }\n }\n else if (operationSpec.formDataParameters && operationSpec.formDataParameters.length > 0) {\n request.formData = {};\n for (const formDataParameter of operationSpec.formDataParameters) {\n const formDataParameterValue = getOperationArgumentValueFromParameter(operationArguments, formDataParameter);\n if (formDataParameterValue !== undefined && formDataParameterValue !== null) {\n const formDataParameterPropertyName = formDataParameter.mapper.serializedName || getPathStringFromParameter(formDataParameter);\n request.formData[formDataParameterPropertyName] = operationSpec.serializer.serialize(formDataParameter.mapper, formDataParameterValue, getPathStringFromParameter(formDataParameter), updatedOptions);\n }\n }\n }\n}\n/**\n * Adds an xml namespace to the xml serialized object if needed, otherwise it just returns the value itself\n */\nfunction getXmlValueWithNamespace(xmlNamespace, xmlnsKey, typeName, serializedValue, options) {\n // Composite and Sequence schemas already got their root namespace set during serialization\n // We just need to add xmlns to the other schema types\n if (xmlNamespace && ![\"Composite\", \"Sequence\", \"Dictionary\"].includes(typeName)) {\n const result = {};\n result[options.xml.xmlCharKey] = serializedValue;\n result[XML_ATTRKEY] = { [xmlnsKey]: xmlNamespace };\n return result;\n }\n return serializedValue;\n}\nfunction prepareXMLRootList(obj, elementName, xmlNamespaceKey, xmlNamespace) {\n if (!Array.isArray(obj)) {\n obj = [obj];\n }\n if (!xmlNamespaceKey || !xmlNamespace) {\n return { [elementName]: obj };\n }\n const result = { [elementName]: obj };\n result[XML_ATTRKEY] = { [xmlNamespaceKey]: xmlNamespace };\n return result;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Creates a new Pipeline for use with a Service Client.\n * Adds in deserializationPolicy by default.\n * Also adds in bearerTokenAuthenticationPolicy if passed a TokenCredential.\n * @param options - Options to customize the created pipeline.\n */\nfunction createClientPipeline(options = {}) {\n const pipeline = createPipelineFromOptions(options !== null && options !== void 0 ? options : {});\n if (options.credentialOptions) {\n pipeline.addPolicy(bearerTokenAuthenticationPolicy({\n credential: options.credentialOptions.credential,\n scopes: options.credentialOptions.credentialScopes,\n }));\n }\n pipeline.addPolicy(serializationPolicy(options.serializationOptions), { phase: \"Serialize\" });\n pipeline.addPolicy(deserializationPolicy(options.deserializationOptions), {\n phase: \"Deserialize\",\n });\n return pipeline;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nlet cachedHttpClient;\nfunction getCachedDefaultHttpClient() {\n if (!cachedHttpClient) {\n cachedHttpClient = createDefaultHttpClient();\n }\n return cachedHttpClient;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst CollectionFormatToDelimiterMap = {\n CSV: \",\",\n SSV: \" \",\n Multi: \"Multi\",\n TSV: \"\\t\",\n Pipes: \"|\",\n};\nfunction getRequestUrl(baseUri, operationSpec, operationArguments, fallbackObject) {\n const urlReplacements = calculateUrlReplacements(operationSpec, operationArguments, fallbackObject);\n let isAbsolutePath = false;\n let requestUrl = replaceAll(baseUri, urlReplacements);\n if (operationSpec.path) {\n let path = replaceAll(operationSpec.path, urlReplacements);\n // QUIRK: sometimes we get a path component like /{nextLink}\n // which may be a fully formed URL with a leading /. In that case, we should\n // remove the leading /\n if (operationSpec.path === \"/{nextLink}\" && path.startsWith(\"/\")) {\n path = path.substring(1);\n }\n // QUIRK: sometimes we get a path component like {nextLink}\n // which may be a fully formed URL. In that case, we should\n // ignore the baseUri.\n if (isAbsoluteUrl(path)) {\n requestUrl = path;\n isAbsolutePath = true;\n }\n else {\n requestUrl = appendPath(requestUrl, path);\n }\n }\n const { queryParams, sequenceParams } = calculateQueryParameters(operationSpec, operationArguments, fallbackObject);\n /**\n * Notice that this call sets the `noOverwrite` parameter to true if the `requestUrl`\n * is an absolute path. This ensures that existing query parameter values in `requestUrl`\n * do not get overwritten. On the other hand when `requestUrl` is not absolute path, it\n * is still being built so there is nothing to overwrite.\n */\n requestUrl = appendQueryParams(requestUrl, queryParams, sequenceParams, isAbsolutePath);\n return requestUrl;\n}\nfunction replaceAll(input, replacements) {\n let result = input;\n for (const [searchValue, replaceValue] of replacements) {\n result = result.split(searchValue).join(replaceValue);\n }\n return result;\n}\nfunction calculateUrlReplacements(operationSpec, operationArguments, fallbackObject) {\n var _a;\n const result = new Map();\n if ((_a = operationSpec.urlParameters) === null || _a === void 0 ? void 0 : _a.length) {\n for (const urlParameter of operationSpec.urlParameters) {\n let urlParameterValue = getOperationArgumentValueFromParameter(operationArguments, urlParameter, fallbackObject);\n const parameterPathString = getPathStringFromParameter(urlParameter);\n urlParameterValue = operationSpec.serializer.serialize(urlParameter.mapper, urlParameterValue, parameterPathString);\n if (!urlParameter.skipEncoding) {\n urlParameterValue = encodeURIComponent(urlParameterValue);\n }\n result.set(`{${urlParameter.mapper.serializedName || parameterPathString}}`, urlParameterValue);\n }\n }\n return result;\n}\nfunction isAbsoluteUrl(url) {\n return url.includes(\"://\");\n}\nfunction appendPath(url, pathToAppend) {\n if (!pathToAppend) {\n return url;\n }\n const parsedUrl = new URL(url);\n let newPath = parsedUrl.pathname;\n if (!newPath.endsWith(\"/\")) {\n newPath = `${newPath}/`;\n }\n if (pathToAppend.startsWith(\"/\")) {\n pathToAppend = pathToAppend.substring(1);\n }\n const searchStart = pathToAppend.indexOf(\"?\");\n if (searchStart !== -1) {\n const path = pathToAppend.substring(0, searchStart);\n const search = pathToAppend.substring(searchStart + 1);\n newPath = newPath + path;\n if (search) {\n parsedUrl.search = parsedUrl.search ? `${parsedUrl.search}&${search}` : search;\n }\n }\n else {\n newPath = newPath + pathToAppend;\n }\n parsedUrl.pathname = newPath;\n return parsedUrl.toString();\n}\nfunction calculateQueryParameters(operationSpec, operationArguments, fallbackObject) {\n var _a;\n const result = new Map();\n const sequenceParams = new Set();\n if ((_a = operationSpec.queryParameters) === null || _a === void 0 ? void 0 : _a.length) {\n for (const queryParameter of operationSpec.queryParameters) {\n if (queryParameter.mapper.type.name === \"Sequence\" && queryParameter.mapper.serializedName) {\n sequenceParams.add(queryParameter.mapper.serializedName);\n }\n let queryParameterValue = getOperationArgumentValueFromParameter(operationArguments, queryParameter, fallbackObject);\n if ((queryParameterValue !== undefined && queryParameterValue !== null) ||\n queryParameter.mapper.required) {\n queryParameterValue = operationSpec.serializer.serialize(queryParameter.mapper, queryParameterValue, getPathStringFromParameter(queryParameter));\n const delimiter = queryParameter.collectionFormat\n ? CollectionFormatToDelimiterMap[queryParameter.collectionFormat]\n : \"\";\n if (Array.isArray(queryParameterValue)) {\n // replace null and undefined\n queryParameterValue = queryParameterValue.map((item) => {\n if (item === null || item === undefined) {\n return \"\";\n }\n return item;\n });\n }\n if (queryParameter.collectionFormat === \"Multi\" && queryParameterValue.length === 0) {\n continue;\n }\n else if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"SSV\" || queryParameter.collectionFormat === \"TSV\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n if (!queryParameter.skipEncoding) {\n if (Array.isArray(queryParameterValue)) {\n queryParameterValue = queryParameterValue.map((item) => {\n return encodeURIComponent(item);\n });\n }\n else {\n queryParameterValue = encodeURIComponent(queryParameterValue);\n }\n }\n // Join pipes and CSV *after* encoding, or the server will be upset.\n if (Array.isArray(queryParameterValue) &&\n (queryParameter.collectionFormat === \"CSV\" || queryParameter.collectionFormat === \"Pipes\")) {\n queryParameterValue = queryParameterValue.join(delimiter);\n }\n result.set(queryParameter.mapper.serializedName || getPathStringFromParameter(queryParameter), queryParameterValue);\n }\n }\n }\n return {\n queryParams: result,\n sequenceParams,\n };\n}\nfunction simpleParseQueryParams(queryString) {\n const result = new Map();\n if (!queryString || queryString[0] !== \"?\") {\n return result;\n }\n // remove the leading ?\n queryString = queryString.slice(1);\n const pairs = queryString.split(\"&\");\n for (const pair of pairs) {\n const [name, value] = pair.split(\"=\", 2);\n const existingValue = result.get(name);\n if (existingValue) {\n if (Array.isArray(existingValue)) {\n existingValue.push(value);\n }\n else {\n result.set(name, [existingValue, value]);\n }\n }\n else {\n result.set(name, value);\n }\n }\n return result;\n}\n/** @internal */\nfunction appendQueryParams(url, queryParams, sequenceParams, noOverwrite = false) {\n if (queryParams.size === 0) {\n return url;\n }\n const parsedUrl = new URL(url);\n // QUIRK: parsedUrl.searchParams will have their name/value pairs decoded, which\n // can change their meaning to the server, such as in the case of a SAS signature.\n // To avoid accidentally un-encoding a query param, we parse the key/values ourselves\n const combinedParams = simpleParseQueryParams(parsedUrl.search);\n for (const [name, value] of queryParams) {\n const existingValue = combinedParams.get(name);\n if (Array.isArray(existingValue)) {\n if (Array.isArray(value)) {\n existingValue.push(...value);\n const valueSet = new Set(existingValue);\n combinedParams.set(name, Array.from(valueSet));\n }\n else {\n existingValue.push(value);\n }\n }\n else if (existingValue) {\n if (Array.isArray(value)) {\n value.unshift(existingValue);\n }\n else if (sequenceParams.has(name)) {\n combinedParams.set(name, [existingValue, value]);\n }\n if (!noOverwrite) {\n combinedParams.set(name, value);\n }\n }\n else {\n combinedParams.set(name, value);\n }\n }\n const searchPieces = [];\n for (const [name, value] of combinedParams) {\n if (typeof value === \"string\") {\n searchPieces.push(`${name}=${value}`);\n }\n else if (Array.isArray(value)) {\n // QUIRK: If we get an array of values, include multiple key/value pairs\n for (const subValue of value) {\n searchPieces.push(`${name}=${subValue}`);\n }\n }\n else {\n searchPieces.push(`${name}=${value}`);\n }\n }\n // QUIRK: we have to set search manually as searchParams will encode comma when it shouldn't.\n parsedUrl.search = searchPieces.length ? `?${searchPieces.join(\"&\")}` : \"\";\n return parsedUrl.toString();\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst logger$1 = createClientLogger(\"core-client\");\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Initializes a new instance of the ServiceClient.\n */\nclass ServiceClient {\n /**\n * The ServiceClient constructor\n * @param credential - The credentials used for authentication with the service.\n * @param options - The service client options that govern the behavior of the client.\n */\n constructor(options = {}) {\n var _a, _b;\n this._requestContentType = options.requestContentType;\n this._endpoint = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri;\n if (options.baseUri) {\n logger$1.warning(\"The baseUri option for SDK Clients has been deprecated, please use endpoint instead.\");\n }\n this._allowInsecureConnection = options.allowInsecureConnection;\n this._httpClient = options.httpClient || getCachedDefaultHttpClient();\n this.pipeline = options.pipeline || createDefaultPipeline(options);\n if ((_b = options.additionalPolicies) === null || _b === void 0 ? void 0 : _b.length) {\n for (const { policy, position } of options.additionalPolicies) {\n // Sign happens after Retry and is commonly needed to occur\n // before policies that intercept post-retry.\n const afterPhase = position === \"perRetry\" ? \"Sign\" : undefined;\n this.pipeline.addPolicy(policy, {\n afterPhase,\n });\n }\n }\n }\n /**\n * Send the provided httpRequest.\n */\n async sendRequest(request) {\n return this.pipeline.sendRequest(this._httpClient, request);\n }\n /**\n * Send an HTTP request that is populated using the provided OperationSpec.\n * @typeParam T - The typed result of the request, based on the OperationSpec.\n * @param operationArguments - The arguments that the HTTP request's templated values will be populated from.\n * @param operationSpec - The OperationSpec to use to populate the httpRequest.\n */\n async sendOperationRequest(operationArguments, operationSpec) {\n const endpoint = operationSpec.baseUrl || this._endpoint;\n if (!endpoint) {\n throw new Error(\"If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.\");\n }\n // Templatized URLs sometimes reference properties on the ServiceClient child class,\n // so we have to pass `this` below in order to search these properties if they're\n // not part of OperationArguments\n const url = getRequestUrl(endpoint, operationSpec, operationArguments, this);\n const request = createPipelineRequest({\n url,\n });\n request.method = operationSpec.httpMethod;\n const operationInfo = getOperationRequestInfo(request);\n operationInfo.operationSpec = operationSpec;\n operationInfo.operationArguments = operationArguments;\n const contentType = operationSpec.contentType || this._requestContentType;\n if (contentType && operationSpec.requestBody) {\n request.headers.set(\"Content-Type\", contentType);\n }\n const options = operationArguments.options;\n if (options) {\n const requestOptions = options.requestOptions;\n if (requestOptions) {\n if (requestOptions.timeout) {\n request.timeout = requestOptions.timeout;\n }\n if (requestOptions.onUploadProgress) {\n request.onUploadProgress = requestOptions.onUploadProgress;\n }\n if (requestOptions.onDownloadProgress) {\n request.onDownloadProgress = requestOptions.onDownloadProgress;\n }\n if (requestOptions.shouldDeserialize !== undefined) {\n operationInfo.shouldDeserialize = requestOptions.shouldDeserialize;\n }\n if (requestOptions.allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n }\n if (options.abortSignal) {\n request.abortSignal = options.abortSignal;\n }\n if (options.tracingOptions) {\n request.tracingOptions = options.tracingOptions;\n }\n }\n if (this._allowInsecureConnection) {\n request.allowInsecureConnection = true;\n }\n if (request.streamResponseStatusCodes === undefined) {\n request.streamResponseStatusCodes = getStreamingResponseStatusCodes(operationSpec);\n }\n try {\n const rawResponse = await this.sendRequest(request);\n const flatResponse = flattenResponse(rawResponse, operationSpec.responses[rawResponse.status]);\n if (options === null || options === void 0 ? void 0 : options.onResponse) {\n options.onResponse(rawResponse, flatResponse);\n }\n return flatResponse;\n }\n catch (error) {\n if (typeof error === \"object\" && (error === null || error === void 0 ? void 0 : error.response)) {\n const rawResponse = error.response;\n const flatResponse = flattenResponse(rawResponse, operationSpec.responses[error.statusCode] || operationSpec.responses[\"default\"]);\n error.details = flatResponse;\n if (options === null || options === void 0 ? void 0 : options.onResponse) {\n options.onResponse(rawResponse, flatResponse, error);\n }\n }\n throw error;\n }\n }\n}\nfunction createDefaultPipeline(options) {\n const credentialScopes = getCredentialScopes(options);\n const credentialOptions = options.credential && credentialScopes\n ? { credentialScopes, credential: options.credential }\n : undefined;\n return createClientPipeline(Object.assign(Object.assign({}, options), { credentialOptions }));\n}\nfunction getCredentialScopes(options) {\n if (options.credentialScopes) {\n return options.credentialScopes;\n }\n if (options.endpoint) {\n return `${options.endpoint}/.default`;\n }\n if (options.baseUri) {\n return `${options.baseUri}/.default`;\n }\n if (options.credential && !options.credentialScopes) {\n throw new Error(`When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy`);\n }\n return undefined;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction toWebResourceLike(request, options) {\n const webResource = {\n url: request.url,\n method: request.method,\n headers: toHttpHeadersLike(request.headers),\n withCredentials: request.withCredentials,\n timeout: request.timeout,\n requestId: request.headers.get(\"x-ms-client-request-id\") || request.requestId,\n abortSignal: request.abortSignal,\n body: request.body,\n formData: request.formData,\n keepAlive: !!request.disableKeepAlive,\n onDownloadProgress: request.onDownloadProgress,\n onUploadProgress: request.onUploadProgress,\n proxySettings: request.proxySettings,\n streamResponseStatusCodes: request.streamResponseStatusCodes,\n clone() {\n throw new Error(\"Cannot clone a non-proxied WebResourceLike\");\n },\n prepare() {\n throw new Error(\"WebResourceLike.prepare() is not supported by @azure/core-http-compat\");\n },\n validateRequestProperties() {\n /** do nothing */\n },\n };\n {\n return webResource;\n }\n}\n/**\n * Converts HttpHeaders from core-rest-pipeline to look like\n * HttpHeaders from core-http.\n * @param headers - HttpHeaders from core-rest-pipeline\n * @returns HttpHeaders as they looked in core-http\n */\nfunction toHttpHeadersLike(headers) {\n return new HttpHeaders(headers.toJSON({ preserveCase: true }));\n}\n/**\n * A collection of HttpHeaders that can be sent with a HTTP request.\n */\nfunction getHeaderKey(headerName) {\n return headerName.toLowerCase();\n}\n/**\n * A collection of HTTP header key/value pairs.\n */\nclass HttpHeaders {\n constructor(rawHeaders) {\n this._headersMap = {};\n if (rawHeaders) {\n for (const headerName in rawHeaders) {\n this.set(headerName, rawHeaders[headerName]);\n }\n }\n }\n /**\n * Set a header in this collection with the provided name and value. The name is\n * case-insensitive.\n * @param headerName - The name of the header to set. This value is case-insensitive.\n * @param headerValue - The value of the header to set.\n */\n set(headerName, headerValue) {\n this._headersMap[getHeaderKey(headerName)] = {\n name: headerName,\n value: headerValue.toString(),\n };\n }\n /**\n * Get the header value for the provided header name, or undefined if no header exists in this\n * collection with the provided name.\n * @param headerName - The name of the header.\n */\n get(headerName) {\n const header = this._headersMap[getHeaderKey(headerName)];\n return !header ? undefined : header.value;\n }\n /**\n * Get whether or not this header collection contains a header entry for the provided header name.\n */\n contains(headerName) {\n return !!this._headersMap[getHeaderKey(headerName)];\n }\n /**\n * Remove the header with the provided headerName. Return whether or not the header existed and\n * was removed.\n * @param headerName - The name of the header to remove.\n */\n remove(headerName) {\n const result = this.contains(headerName);\n delete this._headersMap[getHeaderKey(headerName)];\n return result;\n }\n /**\n * Get the headers that are contained this collection as an object.\n */\n rawHeaders() {\n return this.toJson({ preserveCase: true });\n }\n /**\n * Get the headers that are contained in this collection as an array.\n */\n headersArray() {\n const headers = [];\n for (const headerKey in this._headersMap) {\n headers.push(this._headersMap[headerKey]);\n }\n return headers;\n }\n /**\n * Get the header names that are contained in this collection.\n */\n headerNames() {\n const headerNames = [];\n const headers = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerNames.push(headers[i].name);\n }\n return headerNames;\n }\n /**\n * Get the header values that are contained in this collection.\n */\n headerValues() {\n const headerValues = [];\n const headers = this.headersArray();\n for (let i = 0; i < headers.length; ++i) {\n headerValues.push(headers[i].value);\n }\n return headerValues;\n }\n /**\n * Get the JSON object representation of this HTTP header collection.\n */\n toJson(options = {}) {\n const result = {};\n if (options.preserveCase) {\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n result[header.name] = header.value;\n }\n }\n else {\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n result[getHeaderKey(header.name)] = header.value;\n }\n }\n return result;\n }\n /**\n * Get the string representation of this HTTP header collection.\n */\n toString() {\n return JSON.stringify(this.toJson({ preserveCase: true }));\n }\n /**\n * Create a deep clone/copy of this HttpHeaders collection.\n */\n clone() {\n const resultPreservingCasing = {};\n for (const headerKey in this._headersMap) {\n const header = this._headersMap[headerKey];\n resultPreservingCasing[header.name] = header.value;\n }\n return new HttpHeaders(resultPreservingCasing);\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * A helper to convert response objects from the new pipeline back to the old one.\n * @param response - A response object from core-client.\n * @returns A response compatible with `HttpOperationResponse` from core-http.\n */\nfunction toCompatResponse(response, options) {\n let request = toWebResourceLike(response.request);\n let headers = toHttpHeadersLike(response.headers);\n {\n return Object.assign(Object.assign({}, response), { request,\n headers });\n }\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Client to provide compatability between core V1 & V2.\n */\nclass ExtendedServiceClient extends ServiceClient {\n constructor(options) {\n var _a, _b;\n super(options);\n if (((_a = options.keepAliveOptions) === null || _a === void 0 ? void 0 : _a.enable) === false &&\n !pipelineContainsDisableKeepAlivePolicy(this.pipeline)) {\n this.pipeline.addPolicy(createDisableKeepAlivePolicy());\n }\n if (((_b = options.redirectOptions) === null || _b === void 0 ? void 0 : _b.handleRedirects) === false) {\n this.pipeline.removePolicy({\n name: redirectPolicyName,\n });\n }\n }\n /**\n * Compatible send operation request function.\n *\n * @param operationArguments - Operation arguments\n * @param operationSpec - Operation Spec\n * @returns\n */\n async sendOperationRequest(operationArguments, operationSpec) {\n var _a;\n const userProvidedCallBack = (_a = operationArguments === null || operationArguments === void 0 ? void 0 : operationArguments.options) === null || _a === void 0 ? void 0 : _a.onResponse;\n let lastResponse;\n function onResponse(rawResponse, flatResponse, error) {\n lastResponse = rawResponse;\n if (userProvidedCallBack) {\n userProvidedCallBack(rawResponse, flatResponse, error);\n }\n }\n operationArguments.options = Object.assign(Object.assign({}, operationArguments.options), { onResponse });\n const result = await super.sendOperationRequest(operationArguments, operationSpec);\n if (lastResponse) {\n Object.defineProperty(result, \"_response\", {\n value: toCompatResponse(lastResponse),\n });\n }\n return result;\n }\n}\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst ErrorResponse = {\n type: {\n name: \"Composite\",\n className: \"ErrorResponse\",\n modelProperties: {\n error: {\n serializedName: \"error\",\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n};\nconst ErrorDetail = {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n modelProperties: {\n code: {\n serializedName: \"code\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n message: {\n serializedName: \"message\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n target: {\n serializedName: \"target\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n details: {\n serializedName: \"details\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorDetail\",\n },\n },\n },\n },\n additionalInfo: {\n serializedName: \"additionalInfo\",\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n },\n },\n },\n },\n },\n },\n};\nconst ErrorAdditionalInfo = {\n type: {\n name: \"Composite\",\n className: \"ErrorAdditionalInfo\",\n modelProperties: {\n type: {\n serializedName: \"type\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n info: {\n serializedName: \"info\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: { type: { name: \"any\" } },\n },\n },\n },\n },\n};\nconst SearchDocumentsResult = {\n type: {\n name: \"Composite\",\n className: \"SearchDocumentsResult\",\n modelProperties: {\n count: {\n serializedName: \"@odata\\\\.count\",\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n coverage: {\n serializedName: \"@search\\\\.coverage\",\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n facets: {\n serializedName: \"@search\\\\.facets\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: {\n type: {\n name: \"Sequence\",\n element: {\n type: { name: \"Composite\", className: \"FacetResult\" },\n },\n },\n },\n },\n },\n answers: {\n serializedName: \"@search\\\\.answers\",\n readOnly: true,\n nullable: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"QueryAnswerResult\",\n },\n },\n },\n },\n nextPageParameters: {\n serializedName: \"@search\\\\.nextPageParameters\",\n type: {\n name: \"Composite\",\n className: \"SearchRequest\",\n },\n },\n results: {\n serializedName: \"value\",\n required: true,\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"SearchResult\",\n },\n },\n },\n },\n nextLink: {\n serializedName: \"@odata\\\\.nextLink\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n semanticPartialResponseReason: {\n serializedName: \"@search\\\\.semanticPartialResponseReason\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n semanticPartialResponseType: {\n serializedName: \"@search\\\\.semanticPartialResponseType\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst FacetResult = {\n type: {\n name: \"Composite\",\n className: \"FacetResult\",\n additionalProperties: { type: { name: \"Object\" } },\n modelProperties: {\n count: {\n serializedName: \"count\",\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nconst QueryAnswerResult = {\n type: {\n name: \"Composite\",\n className: \"QueryAnswerResult\",\n additionalProperties: { type: { name: \"Object\" } },\n modelProperties: {\n score: {\n serializedName: \"score\",\n required: true,\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n key: {\n serializedName: \"key\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n text: {\n serializedName: \"text\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n highlights: {\n serializedName: \"highlights\",\n readOnly: true,\n nullable: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst SearchRequest = {\n type: {\n name: \"Composite\",\n className: \"SearchRequest\",\n modelProperties: {\n includeTotalResultCount: {\n serializedName: \"count\",\n type: {\n name: \"Boolean\",\n },\n },\n facets: {\n serializedName: \"facets\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n filter: {\n serializedName: \"filter\",\n type: {\n name: \"String\",\n },\n },\n highlightFields: {\n serializedName: \"highlight\",\n type: {\n name: \"String\",\n },\n },\n highlightPostTag: {\n serializedName: \"highlightPostTag\",\n type: {\n name: \"String\",\n },\n },\n highlightPreTag: {\n serializedName: \"highlightPreTag\",\n type: {\n name: \"String\",\n },\n },\n minimumCoverage: {\n serializedName: \"minimumCoverage\",\n type: {\n name: \"Number\",\n },\n },\n orderBy: {\n serializedName: \"orderby\",\n type: {\n name: \"String\",\n },\n },\n queryType: {\n serializedName: \"queryType\",\n type: {\n name: \"Enum\",\n allowedValues: [\"simple\", \"full\", \"semantic\"],\n },\n },\n scoringStatistics: {\n serializedName: \"scoringStatistics\",\n type: {\n name: \"Enum\",\n allowedValues: [\"local\", \"global\"],\n },\n },\n sessionId: {\n serializedName: \"sessionId\",\n type: {\n name: \"String\",\n },\n },\n scoringParameters: {\n serializedName: \"scoringParameters\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n scoringProfile: {\n serializedName: \"scoringProfile\",\n type: {\n name: \"String\",\n },\n },\n searchText: {\n serializedName: \"search\",\n type: {\n name: \"String\",\n },\n },\n searchFields: {\n serializedName: \"searchFields\",\n type: {\n name: \"String\",\n },\n },\n searchMode: {\n serializedName: \"searchMode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"any\", \"all\"],\n },\n },\n select: {\n serializedName: \"select\",\n type: {\n name: \"String\",\n },\n },\n skip: {\n serializedName: \"skip\",\n type: {\n name: \"Number\",\n },\n },\n top: {\n serializedName: \"top\",\n type: {\n name: \"Number\",\n },\n },\n semanticConfigurationName: {\n serializedName: \"semanticConfiguration\",\n type: {\n name: \"String\",\n },\n },\n semanticErrorHandling: {\n serializedName: \"semanticErrorHandling\",\n type: {\n name: \"String\",\n },\n },\n semanticMaxWaitInMilliseconds: {\n constraints: {\n InclusiveMinimum: 700,\n },\n serializedName: \"semanticMaxWaitInMilliseconds\",\n nullable: true,\n type: {\n name: \"Number\",\n },\n },\n semanticQuery: {\n serializedName: \"semanticQuery\",\n type: {\n name: \"String\",\n },\n },\n answers: {\n serializedName: \"answers\",\n type: {\n name: \"String\",\n },\n },\n captions: {\n serializedName: \"captions\",\n type: {\n name: \"String\",\n },\n },\n vectorQueries: {\n serializedName: \"vectorQueries\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"VectorQuery\",\n },\n },\n },\n },\n vectorFilterMode: {\n serializedName: \"vectorFilterMode\",\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst VectorQuery = {\n type: {\n name: \"Composite\",\n className: \"VectorQuery\",\n uberParent: \"VectorQuery\",\n polymorphicDiscriminator: {\n serializedName: \"kind\",\n clientName: \"kind\",\n },\n modelProperties: {\n kind: {\n serializedName: \"kind\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n kNearestNeighborsCount: {\n serializedName: \"k\",\n type: {\n name: \"Number\",\n },\n },\n fields: {\n serializedName: \"fields\",\n type: {\n name: \"String\",\n },\n },\n exhaustive: {\n serializedName: \"exhaustive\",\n type: {\n name: \"Boolean\",\n },\n },\n oversampling: {\n serializedName: \"oversampling\",\n type: {\n name: \"Number\",\n },\n },\n weight: {\n serializedName: \"weight\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nconst SearchResult = {\n type: {\n name: \"Composite\",\n className: \"SearchResult\",\n additionalProperties: { type: { name: \"Object\" } },\n modelProperties: {\n _score: {\n serializedName: \"@search\\\\.score\",\n required: true,\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n _rerankerScore: {\n serializedName: \"@search\\\\.rerankerScore\",\n readOnly: true,\n nullable: true,\n type: {\n name: \"Number\",\n },\n },\n _highlights: {\n serializedName: \"@search\\\\.highlights\",\n readOnly: true,\n type: {\n name: \"Dictionary\",\n value: {\n type: { name: \"Sequence\", element: { type: { name: \"String\" } } },\n },\n },\n },\n _captions: {\n serializedName: \"@search\\\\.captions\",\n readOnly: true,\n nullable: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"QueryCaptionResult\",\n },\n },\n },\n },\n },\n },\n};\nconst QueryCaptionResult = {\n type: {\n name: \"Composite\",\n className: \"QueryCaptionResult\",\n additionalProperties: { type: { name: \"Object\" } },\n modelProperties: {\n text: {\n serializedName: \"text\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n highlights: {\n serializedName: \"highlights\",\n readOnly: true,\n nullable: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst SuggestDocumentsResult = {\n type: {\n name: \"Composite\",\n className: \"SuggestDocumentsResult\",\n modelProperties: {\n results: {\n serializedName: \"value\",\n required: true,\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"SuggestResult\",\n },\n },\n },\n },\n coverage: {\n serializedName: \"@search\\\\.coverage\",\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nconst SuggestResult = {\n type: {\n name: \"Composite\",\n className: \"SuggestResult\",\n additionalProperties: { type: { name: \"Object\" } },\n modelProperties: {\n _text: {\n serializedName: \"@search\\\\.text\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst SuggestRequest = {\n type: {\n name: \"Composite\",\n className: \"SuggestRequest\",\n modelProperties: {\n filter: {\n serializedName: \"filter\",\n type: {\n name: \"String\",\n },\n },\n useFuzzyMatching: {\n serializedName: \"fuzzy\",\n type: {\n name: \"Boolean\",\n },\n },\n highlightPostTag: {\n serializedName: \"highlightPostTag\",\n type: {\n name: \"String\",\n },\n },\n highlightPreTag: {\n serializedName: \"highlightPreTag\",\n type: {\n name: \"String\",\n },\n },\n minimumCoverage: {\n serializedName: \"minimumCoverage\",\n type: {\n name: \"Number\",\n },\n },\n orderBy: {\n serializedName: \"orderby\",\n type: {\n name: \"String\",\n },\n },\n searchText: {\n serializedName: \"search\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n searchFields: {\n serializedName: \"searchFields\",\n type: {\n name: \"String\",\n },\n },\n select: {\n serializedName: \"select\",\n type: {\n name: \"String\",\n },\n },\n suggesterName: {\n serializedName: \"suggesterName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n top: {\n serializedName: \"top\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nconst IndexBatch = {\n type: {\n name: \"Composite\",\n className: \"IndexBatch\",\n modelProperties: {\n actions: {\n serializedName: \"value\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"IndexAction\",\n },\n },\n },\n },\n },\n },\n};\nconst IndexAction = {\n type: {\n name: \"Composite\",\n className: \"IndexAction\",\n additionalProperties: { type: { name: \"Object\" } },\n modelProperties: {\n __actionType: {\n serializedName: \"@search\\\\.action\",\n required: true,\n type: {\n name: \"Enum\",\n allowedValues: [\"upload\", \"merge\", \"mergeOrUpload\", \"delete\"],\n },\n },\n },\n },\n};\nconst IndexDocumentsResult = {\n type: {\n name: \"Composite\",\n className: \"IndexDocumentsResult\",\n modelProperties: {\n results: {\n serializedName: \"value\",\n required: true,\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"IndexingResult\",\n },\n },\n },\n },\n },\n },\n};\nconst IndexingResult = {\n type: {\n name: \"Composite\",\n className: \"IndexingResult\",\n modelProperties: {\n key: {\n serializedName: \"key\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n errorMessage: {\n serializedName: \"errorMessage\",\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n succeeded: {\n serializedName: \"status\",\n required: true,\n readOnly: true,\n type: {\n name: \"Boolean\",\n },\n },\n statusCode: {\n serializedName: \"statusCode\",\n required: true,\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nconst AutocompleteResult = {\n type: {\n name: \"Composite\",\n className: \"AutocompleteResult\",\n modelProperties: {\n coverage: {\n serializedName: \"@search\\\\.coverage\",\n readOnly: true,\n type: {\n name: \"Number\",\n },\n },\n results: {\n serializedName: \"value\",\n required: true,\n readOnly: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Composite\",\n className: \"AutocompleteItem\",\n },\n },\n },\n },\n },\n },\n};\nconst AutocompleteItem = {\n type: {\n name: \"Composite\",\n className: \"AutocompleteItem\",\n modelProperties: {\n text: {\n serializedName: \"text\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n queryPlusText: {\n serializedName: \"queryPlusText\",\n required: true,\n readOnly: true,\n type: {\n name: \"String\",\n },\n },\n },\n },\n};\nconst AutocompleteRequest = {\n type: {\n name: \"Composite\",\n className: \"AutocompleteRequest\",\n modelProperties: {\n searchText: {\n serializedName: \"search\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n autocompleteMode: {\n serializedName: \"autocompleteMode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"oneTerm\", \"twoTerms\", \"oneTermWithContext\"],\n },\n },\n filter: {\n serializedName: \"filter\",\n type: {\n name: \"String\",\n },\n },\n useFuzzyMatching: {\n serializedName: \"fuzzy\",\n type: {\n name: \"Boolean\",\n },\n },\n highlightPostTag: {\n serializedName: \"highlightPostTag\",\n type: {\n name: \"String\",\n },\n },\n highlightPreTag: {\n serializedName: \"highlightPreTag\",\n type: {\n name: \"String\",\n },\n },\n minimumCoverage: {\n serializedName: \"minimumCoverage\",\n type: {\n name: \"Number\",\n },\n },\n searchFields: {\n serializedName: \"searchFields\",\n type: {\n name: \"String\",\n },\n },\n suggesterName: {\n serializedName: \"suggesterName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n top: {\n serializedName: \"top\",\n type: {\n name: \"Number\",\n },\n },\n },\n },\n};\nconst VectorizedQuery = {\n serializedName: \"vector\",\n type: {\n name: \"Composite\",\n className: \"VectorizedQuery\",\n uberParent: \"VectorQuery\",\n polymorphicDiscriminator: VectorQuery.type.polymorphicDiscriminator,\n modelProperties: Object.assign(Object.assign({}, VectorQuery.type.modelProperties), { vector: {\n serializedName: \"vector\",\n required: true,\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"Number\",\n },\n },\n },\n } }),\n },\n};\nconst VectorizableTextQuery = {\n serializedName: \"text\",\n type: {\n name: \"Composite\",\n className: \"VectorizableTextQuery\",\n uberParent: \"VectorQuery\",\n polymorphicDiscriminator: VectorQuery.type.polymorphicDiscriminator,\n modelProperties: Object.assign(Object.assign({}, VectorQuery.type.modelProperties), { text: {\n serializedName: \"text\",\n required: true,\n type: {\n name: \"String\",\n },\n } }),\n },\n};\nlet discriminators = {\n VectorQuery: VectorQuery,\n \"VectorQuery.vector\": VectorizedQuery,\n \"VectorQuery.text\": VectorizableTextQuery,\n};\n\nvar Mappers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n AutocompleteItem: AutocompleteItem,\n AutocompleteRequest: AutocompleteRequest,\n AutocompleteResult: AutocompleteResult,\n ErrorAdditionalInfo: ErrorAdditionalInfo,\n ErrorDetail: ErrorDetail,\n ErrorResponse: ErrorResponse,\n FacetResult: FacetResult,\n IndexAction: IndexAction,\n IndexBatch: IndexBatch,\n IndexDocumentsResult: IndexDocumentsResult,\n IndexingResult: IndexingResult,\n QueryAnswerResult: QueryAnswerResult,\n QueryCaptionResult: QueryCaptionResult,\n SearchDocumentsResult: SearchDocumentsResult,\n SearchRequest: SearchRequest,\n SearchResult: SearchResult,\n SuggestDocumentsResult: SuggestDocumentsResult,\n SuggestRequest: SuggestRequest,\n SuggestResult: SuggestResult,\n VectorQuery: VectorQuery,\n VectorizableTextQuery: VectorizableTextQuery,\n VectorizedQuery: VectorizedQuery,\n discriminators: discriminators\n});\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\nconst accept = {\n parameterPath: \"accept\",\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Accept\",\n type: {\n name: \"String\",\n },\n },\n};\nconst endpoint = {\n parameterPath: \"endpoint\",\n mapper: {\n serializedName: \"endpoint\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n skipEncoding: true,\n};\nconst indexName = {\n parameterPath: \"indexName\",\n mapper: {\n serializedName: \"indexName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst apiVersion = {\n parameterPath: \"apiVersion\",\n mapper: {\n serializedName: \"api-version\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst searchText = {\n parameterPath: [\"options\", \"searchText\"],\n mapper: {\n serializedName: \"search\",\n type: {\n name: \"String\",\n },\n },\n};\nconst includeTotalResultCount = {\n parameterPath: [\"options\", \"searchOptions\", \"includeTotalResultCount\"],\n mapper: {\n serializedName: \"$count\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nconst facets = {\n parameterPath: [\"options\", \"searchOptions\", \"facets\"],\n mapper: {\n serializedName: \"facet\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"Multi\",\n};\nconst filter = {\n parameterPath: [\"options\", \"searchOptions\", \"filter\"],\n mapper: {\n serializedName: \"$filter\",\n type: {\n name: \"String\",\n },\n },\n};\nconst highlightFields = {\n parameterPath: [\"options\", \"searchOptions\", \"highlightFields\"],\n mapper: {\n serializedName: \"highlight\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst highlightPostTag = {\n parameterPath: [\"options\", \"searchOptions\", \"highlightPostTag\"],\n mapper: {\n serializedName: \"highlightPostTag\",\n type: {\n name: \"String\",\n },\n },\n};\nconst highlightPreTag = {\n parameterPath: [\"options\", \"searchOptions\", \"highlightPreTag\"],\n mapper: {\n serializedName: \"highlightPreTag\",\n type: {\n name: \"String\",\n },\n },\n};\nconst minimumCoverage = {\n parameterPath: [\"options\", \"searchOptions\", \"minimumCoverage\"],\n mapper: {\n serializedName: \"minimumCoverage\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst orderBy = {\n parameterPath: [\"options\", \"searchOptions\", \"orderBy\"],\n mapper: {\n serializedName: \"$orderby\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst queryType = {\n parameterPath: [\"options\", \"searchOptions\", \"queryType\"],\n mapper: {\n serializedName: \"queryType\",\n type: {\n name: \"Enum\",\n allowedValues: [\"simple\", \"full\", \"semantic\"],\n },\n },\n};\nconst scoringParameters = {\n parameterPath: [\"options\", \"searchOptions\", \"scoringParameters\"],\n mapper: {\n serializedName: \"scoringParameter\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"Multi\",\n};\nconst scoringProfile = {\n parameterPath: [\"options\", \"searchOptions\", \"scoringProfile\"],\n mapper: {\n serializedName: \"scoringProfile\",\n type: {\n name: \"String\",\n },\n },\n};\nconst searchFields = {\n parameterPath: [\"options\", \"searchOptions\", \"searchFields\"],\n mapper: {\n serializedName: \"searchFields\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst searchMode = {\n parameterPath: [\"options\", \"searchOptions\", \"searchMode\"],\n mapper: {\n serializedName: \"searchMode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"any\", \"all\"],\n },\n },\n};\nconst scoringStatistics = {\n parameterPath: [\"options\", \"searchOptions\", \"scoringStatistics\"],\n mapper: {\n serializedName: \"scoringStatistics\",\n type: {\n name: \"Enum\",\n allowedValues: [\"local\", \"global\"],\n },\n },\n};\nconst sessionId = {\n parameterPath: [\"options\", \"searchOptions\", \"sessionId\"],\n mapper: {\n serializedName: \"sessionId\",\n type: {\n name: \"String\",\n },\n },\n};\nconst select = {\n parameterPath: [\"options\", \"searchOptions\", \"select\"],\n mapper: {\n serializedName: \"$select\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst skip = {\n parameterPath: [\"options\", \"searchOptions\", \"skip\"],\n mapper: {\n serializedName: \"$skip\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst top = {\n parameterPath: [\"options\", \"searchOptions\", \"top\"],\n mapper: {\n serializedName: \"$top\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst semanticConfiguration = {\n parameterPath: [\"options\", \"searchOptions\", \"semanticConfiguration\"],\n mapper: {\n serializedName: \"semanticConfiguration\",\n type: {\n name: \"String\",\n },\n },\n};\nconst semanticErrorHandling = {\n parameterPath: [\"options\", \"searchOptions\", \"semanticErrorHandling\"],\n mapper: {\n serializedName: \"semanticErrorHandling\",\n type: {\n name: \"String\",\n },\n },\n};\nconst semanticMaxWaitInMilliseconds = {\n parameterPath: [\"options\", \"searchOptions\", \"semanticMaxWaitInMilliseconds\"],\n mapper: {\n constraints: {\n InclusiveMinimum: 700,\n },\n serializedName: \"semanticMaxWaitInMilliseconds\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst answers = {\n parameterPath: [\"options\", \"searchOptions\", \"answers\"],\n mapper: {\n serializedName: \"answers\",\n type: {\n name: \"String\",\n },\n },\n};\nconst captions = {\n parameterPath: [\"options\", \"searchOptions\", \"captions\"],\n mapper: {\n serializedName: \"captions\",\n type: {\n name: \"String\",\n },\n },\n};\nconst semanticQuery = {\n parameterPath: [\"options\", \"searchOptions\", \"semanticQuery\"],\n mapper: {\n serializedName: \"semanticQuery\",\n type: {\n name: \"String\",\n },\n },\n};\nconst contentType = {\n parameterPath: [\"options\", \"contentType\"],\n mapper: {\n defaultValue: \"application/json\",\n isConstant: true,\n serializedName: \"Content-Type\",\n type: {\n name: \"String\",\n },\n },\n};\nconst searchRequest = {\n parameterPath: \"searchRequest\",\n mapper: SearchRequest,\n};\nconst key = {\n parameterPath: \"key\",\n mapper: {\n serializedName: \"key\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst selectedFields = {\n parameterPath: [\"options\", \"selectedFields\"],\n mapper: {\n serializedName: \"$select\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst searchText1 = {\n parameterPath: \"searchText\",\n mapper: {\n serializedName: \"search\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst suggesterName = {\n parameterPath: \"suggesterName\",\n mapper: {\n serializedName: \"suggesterName\",\n required: true,\n type: {\n name: \"String\",\n },\n },\n};\nconst filter1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"filter\"],\n mapper: {\n serializedName: \"$filter\",\n type: {\n name: \"String\",\n },\n },\n};\nconst useFuzzyMatching = {\n parameterPath: [\"options\", \"suggestOptions\", \"useFuzzyMatching\"],\n mapper: {\n serializedName: \"fuzzy\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nconst highlightPostTag1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"highlightPostTag\"],\n mapper: {\n serializedName: \"highlightPostTag\",\n type: {\n name: \"String\",\n },\n },\n};\nconst highlightPreTag1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"highlightPreTag\"],\n mapper: {\n serializedName: \"highlightPreTag\",\n type: {\n name: \"String\",\n },\n },\n};\nconst minimumCoverage1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"minimumCoverage\"],\n mapper: {\n serializedName: \"minimumCoverage\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst orderBy1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"orderBy\"],\n mapper: {\n serializedName: \"$orderby\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst searchFields1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"searchFields\"],\n mapper: {\n serializedName: \"searchFields\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst select1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"select\"],\n mapper: {\n serializedName: \"$select\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst top1 = {\n parameterPath: [\"options\", \"suggestOptions\", \"top\"],\n mapper: {\n serializedName: \"$top\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst suggestRequest = {\n parameterPath: \"suggestRequest\",\n mapper: SuggestRequest,\n};\nconst batch = {\n parameterPath: \"batch\",\n mapper: IndexBatch,\n};\nconst autocompleteMode = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"autocompleteMode\"],\n mapper: {\n serializedName: \"autocompleteMode\",\n type: {\n name: \"Enum\",\n allowedValues: [\"oneTerm\", \"twoTerms\", \"oneTermWithContext\"],\n },\n },\n};\nconst filter2 = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"filter\"],\n mapper: {\n serializedName: \"$filter\",\n type: {\n name: \"String\",\n },\n },\n};\nconst useFuzzyMatching1 = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"useFuzzyMatching\"],\n mapper: {\n serializedName: \"fuzzy\",\n type: {\n name: \"Boolean\",\n },\n },\n};\nconst highlightPostTag2 = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"highlightPostTag\"],\n mapper: {\n serializedName: \"highlightPostTag\",\n type: {\n name: \"String\",\n },\n },\n};\nconst highlightPreTag2 = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"highlightPreTag\"],\n mapper: {\n serializedName: \"highlightPreTag\",\n type: {\n name: \"String\",\n },\n },\n};\nconst minimumCoverage2 = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"minimumCoverage\"],\n mapper: {\n serializedName: \"minimumCoverage\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst searchFields2 = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"searchFields\"],\n mapper: {\n serializedName: \"searchFields\",\n type: {\n name: \"Sequence\",\n element: {\n type: {\n name: \"String\",\n },\n },\n },\n },\n collectionFormat: \"CSV\",\n};\nconst top2 = {\n parameterPath: [\"options\", \"autocompleteOptions\", \"top\"],\n mapper: {\n serializedName: \"$top\",\n type: {\n name: \"Number\",\n },\n },\n};\nconst autocompleteRequest = {\n parameterPath: \"autocompleteRequest\",\n mapper: AutocompleteRequest,\n};\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n/** Class containing Documents operations. */\nclass DocumentsImpl {\n /**\n * Initialize a new instance of the class Documents class.\n * @param client Reference to the service client\n */\n constructor(client) {\n this.client = client;\n }\n /**\n * Queries the number of documents in the index.\n * @param options The options parameters.\n */\n count(options) {\n return this.client.sendOperationRequest({ options }, countOperationSpec);\n }\n /**\n * Searches for documents in the index.\n * @param options The options parameters.\n */\n searchGet(options) {\n return this.client.sendOperationRequest({ options }, searchGetOperationSpec);\n }\n /**\n * Searches for documents in the index.\n * @param searchRequest The definition of the Search request.\n * @param options The options parameters.\n */\n searchPost(searchRequest, options) {\n return this.client.sendOperationRequest({ searchRequest, options }, searchPostOperationSpec);\n }\n /**\n * Retrieves a document from the index.\n * @param key The key of the document to retrieve.\n * @param options The options parameters.\n */\n get(key, options) {\n return this.client.sendOperationRequest({ key, options }, getOperationSpec);\n }\n /**\n * Suggests documents in the index that match the given partial query text.\n * @param searchText The search text to use to suggest documents. Must be at least 1 character, and no\n * more than 100 characters.\n * @param suggesterName The name of the suggester as specified in the suggesters collection that's part\n * of the index definition.\n * @param options The options parameters.\n */\n suggestGet(searchText, suggesterName, options) {\n return this.client.sendOperationRequest({ searchText, suggesterName, options }, suggestGetOperationSpec);\n }\n /**\n * Suggests documents in the index that match the given partial query text.\n * @param suggestRequest The Suggest request.\n * @param options The options parameters.\n */\n suggestPost(suggestRequest, options) {\n return this.client.sendOperationRequest({ suggestRequest, options }, suggestPostOperationSpec);\n }\n /**\n * Sends a batch of document write actions to the index.\n * @param batch The batch of index actions.\n * @param options The options parameters.\n */\n index(batch, options) {\n return this.client.sendOperationRequest({ batch, options }, indexOperationSpec);\n }\n /**\n * Autocompletes incomplete query terms based on input text and matching terms in the index.\n * @param searchText The incomplete term which should be auto-completed.\n * @param suggesterName The name of the suggester as specified in the suggesters collection that's part\n * of the index definition.\n * @param options The options parameters.\n */\n autocompleteGet(searchText, suggesterName, options) {\n return this.client.sendOperationRequest({ searchText, suggesterName, options }, autocompleteGetOperationSpec);\n }\n /**\n * Autocompletes incomplete query terms based on input text and matching terms in the index.\n * @param autocompleteRequest The definition of the Autocomplete request.\n * @param options The options parameters.\n */\n autocompletePost(autocompleteRequest, options) {\n return this.client.sendOperationRequest({ autocompleteRequest, options }, autocompletePostOperationSpec);\n }\n}\n// Operation Specifications\nconst serializer = createSerializer(Mappers, /* isXml */ false);\nconst countOperationSpec = {\n path: \"/docs/$count\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: { type: { name: \"Number\" } },\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n queryParameters: [apiVersion],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept],\n serializer,\n};\nconst searchGetOperationSpec = {\n path: \"/docs\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: SearchDocumentsResult,\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n queryParameters: [\n apiVersion,\n searchText,\n includeTotalResultCount,\n facets,\n filter,\n highlightFields,\n highlightPostTag,\n highlightPreTag,\n minimumCoverage,\n orderBy,\n queryType,\n scoringParameters,\n scoringProfile,\n searchFields,\n searchMode,\n scoringStatistics,\n sessionId,\n select,\n skip,\n top,\n semanticConfiguration,\n semanticErrorHandling,\n semanticMaxWaitInMilliseconds,\n answers,\n captions,\n semanticQuery,\n ],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept],\n serializer,\n};\nconst searchPostOperationSpec = {\n path: \"/docs/search.post.search\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: SearchDocumentsResult,\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n requestBody: searchRequest,\n queryParameters: [apiVersion],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst getOperationSpec = {\n path: \"/docs('{key}')\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: {\n type: { name: \"Dictionary\", value: { type: { name: \"any\" } } },\n },\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n queryParameters: [apiVersion, selectedFields],\n urlParameters: [endpoint, indexName, key],\n headerParameters: [accept],\n serializer,\n};\nconst suggestGetOperationSpec = {\n path: \"/docs/search.suggest\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: SuggestDocumentsResult,\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n queryParameters: [\n apiVersion,\n searchText1,\n suggesterName,\n filter1,\n useFuzzyMatching,\n highlightPostTag1,\n highlightPreTag1,\n minimumCoverage1,\n orderBy1,\n searchFields1,\n select1,\n top1,\n ],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept],\n serializer,\n};\nconst suggestPostOperationSpec = {\n path: \"/docs/search.post.suggest\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: SuggestDocumentsResult,\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n requestBody: suggestRequest,\n queryParameters: [apiVersion],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst indexOperationSpec = {\n path: \"/docs/search.index\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: IndexDocumentsResult,\n },\n 207: {\n bodyMapper: IndexDocumentsResult,\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n requestBody: batch,\n queryParameters: [apiVersion],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\nconst autocompleteGetOperationSpec = {\n path: \"/docs/search.autocomplete\",\n httpMethod: \"GET\",\n responses: {\n 200: {\n bodyMapper: AutocompleteResult,\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n queryParameters: [\n apiVersion,\n searchText1,\n suggesterName,\n autocompleteMode,\n filter2,\n useFuzzyMatching1,\n highlightPostTag2,\n highlightPreTag2,\n minimumCoverage2,\n searchFields2,\n top2,\n ],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept],\n serializer,\n};\nconst autocompletePostOperationSpec = {\n path: \"/docs/search.post.autocomplete\",\n httpMethod: \"POST\",\n responses: {\n 200: {\n bodyMapper: AutocompleteResult,\n },\n default: {\n bodyMapper: ErrorResponse,\n },\n },\n requestBody: autocompleteRequest,\n queryParameters: [apiVersion],\n urlParameters: [endpoint, indexName],\n headerParameters: [accept, contentType],\n mediaType: \"json\",\n serializer,\n};\n\n/*\n * Copyright (c) Microsoft Corporation.\n * Licensed under the MIT License.\n *\n * Code generated by Microsoft (R) AutoRest Code Generator.\n * Changes may cause incorrect behavior and will be lost if the code is regenerated.\n */\n/** @internal */\nlet SearchClient$1 = class SearchClient extends ExtendedServiceClient {\n /**\n * Initializes a new instance of the SearchClient class.\n * @param endpoint The endpoint URL of the search service.\n * @param indexName The name of the index.\n * @param apiVersion Api Version\n * @param options The parameter options\n */\n constructor(endpoint, indexName, apiVersion, options) {\n var _a, _b;\n if (endpoint === undefined) {\n throw new Error(\"'endpoint' cannot be null\");\n }\n if (indexName === undefined) {\n throw new Error(\"'indexName' cannot be null\");\n }\n if (apiVersion === undefined) {\n throw new Error(\"'apiVersion' cannot be null\");\n }\n // Initializing default values for options\n if (!options) {\n options = {};\n }\n const defaults = {\n requestContentType: \"application/json; charset=utf-8\",\n };\n const packageDetails = `azsdk-js-search-documents/12.1.0`;\n const userAgentPrefix = options.userAgentOptions && options.userAgentOptions.userAgentPrefix\n ? `${options.userAgentOptions.userAgentPrefix} ${packageDetails}`\n : `${packageDetails}`;\n const optionsWithDefaults = Object.assign(Object.assign(Object.assign({}, defaults), options), { userAgentOptions: {\n userAgentPrefix,\n }, endpoint: (_b = (_a = options.endpoint) !== null && _a !== void 0 ? _a : options.baseUri) !== null && _b !== void 0 ? _b : \"{endpoint}/indexes('{indexName}')\" });\n super(optionsWithDefaults);\n // Parameter assignments\n this.endpoint = endpoint;\n this.indexName = indexName;\n this.apiVersion = apiVersion;\n this.documents = new DocumentsImpl(this);\n this.addCustomApiVersionPolicy(apiVersion);\n }\n /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */\n addCustomApiVersionPolicy(apiVersion) {\n if (!apiVersion) {\n return;\n }\n const apiVersionPolicy = {\n name: \"CustomApiVersionPolicy\",\n async sendRequest(request, next) {\n const param = request.url.split(\"?\");\n if (param.length > 1) {\n const newParams = param[1].split(\"&\").map((item) => {\n if (item.indexOf(\"api-version\") > -1) {\n return \"api-version=\" + apiVersion;\n }\n else {\n return item;\n }\n });\n request.url = param[0] + \"?\" + newParams.join(\"&\");\n }\n return next(request);\n },\n };\n this.pipeline.addPolicy(apiVersionPolicy);\n }\n};\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * The `@azure/logger` configuration for this package.\n */\nconst logger = createClientLogger(\"search\");\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst AcceptHeaderName = \"Accept\";\nconst odataMetadataPolicy = \"OdataMetadataPolicy\";\n/**\n * A policy factory for setting the Accept header to ignore odata metadata\n * @internal\n */\nfunction createOdataMetadataPolicy(metadataLevel) {\n return {\n name: odataMetadataPolicy,\n async sendRequest(request, next) {\n request.headers.set(AcceptHeaderName, `application/json;odata.metadata=${metadataLevel}`);\n return next(request);\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst API_KEY_HEADER_NAME = \"api-key\";\nconst searchApiKeyCredentialPolicy = \"SearchApiKeyCredentialPolicy\";\n/**\n * Create an HTTP pipeline policy to authenticate a request\n * using an `AzureKeyCredential` for Azure Cognitive Search\n */\nfunction createSearchApiKeyCredentialPolicy(credential) {\n return {\n name: searchApiKeyCredentialPolicy,\n async sendRequest(request, next) {\n if (!request.headers.has(API_KEY_HEADER_NAME)) {\n request.headers.set(API_KEY_HEADER_NAME, credential.key);\n }\n return next(request);\n },\n };\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nfunction walk(v, fn) {\n var _a;\n const seen = new Set();\n const mutated = new Map();\n deepLazyApply(v);\n for (const value of mutated.values()) {\n replaceChildren(value);\n }\n return (_a = mutated.get(v)) !== null && _a !== void 0 ? _a : v;\n function deepLazyApply(value) {\n var _a, _b;\n if (seen.has(value)) {\n return;\n }\n seen.add(value);\n const children = getChildren((_a = cachedApply(value)) !== null && _a !== void 0 ? _a : value);\n children === null || children === void 0 ? void 0 : children.forEach(deepLazyApply);\n if (children === null || children === void 0 ? void 0 : children.some((node) => mutated.has(node))) {\n mutated.set(value, (_b = mutated.get(value)) !== null && _b !== void 0 ? _b : shallowCopy(value));\n }\n }\n function cachedApply(value) {\n const cached = mutated.get(value);\n if (isDefined(cached)) {\n return cached;\n }\n const applied = fn(value);\n if (value !== applied) {\n mutated.set(value, applied);\n }\n return mutated.get(value);\n }\n function replaceChildren(applied) {\n if (!isComplex(applied)) {\n return;\n }\n else if (Array.isArray(applied)) {\n applied.forEach((e, i) => {\n var _a;\n applied[i] = (_a = mutated.get(e)) !== null && _a !== void 0 ? _a : e;\n });\n }\n else if (typeof applied === \"object\" && applied !== null) {\n Object.keys(applied).forEach((key) => {\n var _a;\n applied[key] = (_a = mutated.get(applied[key])) !== null && _a !== void 0 ? _a : applied[key];\n });\n }\n }\n}\n/**\n * Array inputs SHOULD not have both complex and non-complex elements. This function determines\n * whether an array is complex based solely on the first element.\n */\nfunction isComplex(v) {\n return Array.isArray(v) ? isComplex(v[0]) : typeof v === \"object\" && v !== null;\n}\nfunction getChildren(v) {\n if (!isComplex(v)) {\n return;\n }\n if (Array.isArray(v)) {\n return v;\n }\n return Object.values(v);\n}\nfunction shallowCopy(value) {\n const maybeCopy = Array.isArray(value)\n ? value.map((v) => v)\n : typeof value === \"object\" && value !== null\n ? Object.assign({}, value) : value;\n return value === maybeCopy\n ? value\n : Object.setPrototypeOf(maybeCopy, Object.getPrototypeOf(value));\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst ISO8601DateRegex = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d{1,3})?Z$/i;\nconst GeoJSONPointTypeName = \"Point\";\nconst WorldGeodeticSystem1984 = \"EPSG:4326\"; // See https://epsg.io/4326\nconst [serializeValue, deserializeValue] = [\n [serializeSpecialNumbers, serializeDates, serializeGeoPoint],\n [deserializeSpecialNumbers, deserializeDates, deserializeGeoPoint],\n].map((fns) => (value) => fns.reduceRight((acc, fn) => fn(acc), value));\nfunction serialize(obj) {\n return walk(obj, serializeValue);\n}\nfunction deserialize(obj) {\n return walk(obj, deserializeValue);\n}\nfunction serializeSpecialNumbers(input) {\n if (typeof input === \"number\" && isNaN(input)) {\n return \"NaN\";\n }\n else if (input === Infinity) {\n return \"INF\";\n }\n else if (input === -Infinity) {\n return \"-INF\";\n }\n else {\n return input;\n }\n}\nfunction serializeDates(input) {\n return input instanceof Date ? input.toISOString() : input;\n}\nfunction serializeGeoPoint(input) {\n return input instanceof GeographyPoint ? input.toJSON() : input;\n}\nfunction deserializeSpecialNumbers(input) {\n switch (input) {\n case \"NaN\":\n return NaN;\n case \"-INF\":\n return -Infinity;\n case \"INF\":\n return Infinity;\n default:\n return input;\n }\n}\nfunction deserializeDates(input) {\n return typeof input === \"string\" && ISO8601DateRegex.test(input) ? new Date(input) : input;\n}\nfunction deserializeGeoPoint(input) {\n if (isGeoJSONPoint(input)) {\n const [longitude, latitude] = input.coordinates;\n return new GeographyPoint({ longitude, latitude });\n }\n return input;\n}\nfunction isGeoJSONPoint(obj) {\n const requiredKeys = [\"type\", \"coordinates\"];\n return isValidObject(obj, {\n requiredKeys,\n propertyValidator: (key) => {\n switch (key) {\n case \"type\":\n return obj.type === GeoJSONPointTypeName;\n case \"coordinates\":\n return isCoordinateArray(obj.coordinates);\n case \"crs\":\n return isCrs(obj.crs);\n default:\n return false;\n }\n },\n });\n}\nfunction isCoordinateArray(maybeCoordinates) {\n if (!Array.isArray(maybeCoordinates)) {\n return false;\n }\n if (maybeCoordinates.length !== 2) {\n return false;\n }\n if (typeof maybeCoordinates[0] !== \"number\" || typeof maybeCoordinates[1] !== \"number\") {\n return false;\n }\n return true;\n}\nfunction isCrs(maybeCrs) {\n return isValidObject(maybeCrs, {\n requiredKeys: [\"type\", \"properties\"],\n propertyValidator: (key) => {\n switch (key) {\n case \"type\":\n return maybeCrs.type === \"name\";\n case \"properties\":\n return isCrsProperties(maybeCrs.properties);\n default:\n return false;\n }\n },\n });\n}\nfunction isCrsProperties(maybeProperties) {\n return isValidObject(maybeProperties, {\n requiredKeys: [\"name\"],\n propertyValidator: (key) => {\n if (key === \"name\") {\n return maybeProperties.name === WorldGeodeticSystem1984;\n }\n else {\n return false;\n }\n },\n });\n}\nfunction isValidObject(obj, options = {}) {\n if (typeof obj !== \"object\" || obj === null) {\n return false;\n }\n const keys = Object.keys(obj);\n if (options.requiredKeys) {\n for (const requiredKey of options.requiredKeys) {\n if (!keys.includes(requiredKey)) {\n return false;\n }\n }\n }\n if (options.propertyValidator) {\n for (const key of keys) {\n if (!options.propertyValidator(key)) {\n return false;\n }\n }\n }\n return true;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\nconst defaultServiceVersion = \"2024-07-01\";\nfunction generatedSearchResultToPublicSearchResult(results) {\n const returnValues = results.map((result) => {\n const { _score: score, _highlights: highlights, _rerankerScore: rerankerScore, _captions: captions } = result, restProps = __rest(result, [\"_score\", \"_highlights\", \"_rerankerScore\", \"_captions\"]);\n const obj = {\n score,\n highlights,\n rerankerScore,\n captions,\n document: restProps,\n };\n return obj;\n });\n return returnValues;\n}\nfunction generatedSuggestDocumentsResultToPublicSuggestDocumentsResult(searchDocumentsResult) {\n const results = searchDocumentsResult.results.map((element) => {\n const { _text } = element, restProps = __rest(element, [\"_text\"]);\n const obj = {\n text: _text,\n document: restProps,\n };\n return obj;\n });\n const result = {\n results: results,\n coverage: searchDocumentsResult.coverage,\n };\n return result;\n}\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Creates a tracing client using the global tracer.\n * @internal\n */\nconst tracingClient = createTracingClient({\n namespace: \"Microsoft.Search\",\n packageName: \"Azure.Search\",\n});\nconst createSpan = tracingClient.startSpan;\n\n// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n/**\n * Class used to perform operations against a search index,\n * including querying documents in the index as well as\n * adding, updating, and removing them.\n */\nclass SearchClient {\n /**\n * Creates an instance of SearchClient.\n *\n * Example usage:\n * ```ts\n * const { SearchClient, AzureKeyCredential } = require(\"@azure/search-documents\");\n *\n * const client = new SearchClient(\n * \"\",\n * \"\",\n * new AzureKeyCredential(\"\")\n * );\n * ```\n *\n * Optionally, the type of the model can be used to enable strong typing and type hints:\n * ```ts\n * type TModel = {\n * keyName: string;\n * field1?: string | null;\n * field2?: { anotherField?: string | null } | null;\n * };\n *\n * const client = new SearchClient(\n * ...\n * );\n * ```\n *\n * @param endpoint - The endpoint of the search service\n * @param indexName - The name of the index\n * @param credential - Used to authenticate requests to the service.\n * @param options - Used to configure the Search client.\n *\n * @typeParam TModel - An optional type that represents the documents stored in\n * the search index. For the best typing experience, all non-key fields should\n * be marked optional and nullable, and the key property should have the\n * non-nullable type `string`.\n */\n constructor(endpoint, indexName, credential, options = {}) {\n var _a, _b;\n /// Maintenance note: when updating supported API versions,\n /// the ContinuationToken logic will need to be updated below.\n /**\n * The service version to use when communicating with the service.\n */\n this.serviceVersion = defaultServiceVersion;\n /**\n * The API version to use when communicating with the service.\n * @deprecated use {@Link serviceVersion} instead\n */\n this.apiVersion = defaultServiceVersion;\n this.endpoint = endpoint;\n this.indexName = indexName;\n const internalClientPipelineOptions = Object.assign(Object.assign({}, options), {\n loggingOptions: {\n logger: logger.info,\n additionalAllowedHeaderNames: [\n \"elapsed-time\",\n \"Location\",\n \"OData-MaxVersion\",\n \"OData-Version\",\n \"Prefer\",\n \"throttle-reason\",\n ],\n },\n });\n this.serviceVersion =\n (_b = (_a = options.serviceVersion) !== null && _a !== void 0 ? _a : options.apiVersion) !== null && _b !== void 0 ? _b : defaultServiceVersion;\n this.apiVersion = this.serviceVersion;\n this.client = new SearchClient$1(this.endpoint, this.indexName, this.serviceVersion, internalClientPipelineOptions);\n if (isTokenCredential(credential)) {\n const scope = options.audience\n ? `${options.audience}/.default`\n : `${KnownSearchAudience.AzurePublicCloud}/.default`;\n this.client.pipeline.addPolicy(bearerTokenAuthenticationPolicy({ credential, scopes: scope }));\n }\n else {\n this.client.pipeline.addPolicy(createSearchApiKeyCredentialPolicy(credential));\n }\n this.client.pipeline.addPolicy(createOdataMetadataPolicy(\"none\"));\n }\n /**\n * Retrieves the number of documents in the index.\n * @param options - Options to the count operation.\n */\n async getDocumentsCount(options = {}) {\n const { span, updatedOptions } = createSpan(\"SearchClient-getDocumentsCount\", options);\n try {\n let documentsCount = 0;\n await this.client.documents.count(Object.assign(Object.assign({}, updatedOptions), { onResponse: (rawResponse, flatResponse) => {\n documentsCount = Number(rawResponse.bodyAsText);\n if (updatedOptions.onResponse) {\n updatedOptions.onResponse(rawResponse, flatResponse);\n }\n } }));\n return documentsCount;\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Based on a partial searchText from the user, return a list\n * of potential completion strings based on a specified suggester.\n * @param searchText - The search text on which to base autocomplete results.\n * @param suggesterName - The name of the suggester as specified in the suggesters collection that's part of the index definition.\n * @param options - Options to the autocomplete operation.\n * @example\n * ```ts\n * import {\n * AzureKeyCredential,\n * SearchClient,\n * SearchFieldArray,\n * } from \"@azure/search-documents\";\n *\n * type TModel = {\n * key: string;\n * azure?: { sdk: string | null } | null;\n * };\n *\n * const client = new SearchClient(\n * \"endpoint.azure\",\n * \"indexName\",\n * new AzureKeyCredential(\"key\")\n * );\n *\n * const searchFields: SearchFieldArray = [\"azure/sdk\"];\n *\n * const autocompleteResult = await client.autocomplete(\n * \"searchText\",\n * \"suggesterName\",\n * { searchFields }\n * );\n * ```\n */\n async autocomplete(searchText, suggesterName, options = {}) {\n const { searchFields } = options, nonFieldOptions = __rest(options, [\"searchFields\"]);\n const fullOptions = Object.assign({ searchText: searchText, suggesterName: suggesterName, searchFields: this.convertSearchFields(searchFields) }, nonFieldOptions);\n if (!fullOptions.searchText) {\n throw new RangeError(\"searchText must be provided.\");\n }\n if (!fullOptions.suggesterName) {\n throw new RangeError(\"suggesterName must be provided.\");\n }\n const { span, updatedOptions } = createSpan(\"SearchClient-autocomplete\", options);\n try {\n const result = await this.client.documents.autocompletePost(fullOptions, updatedOptions);\n return result;\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n async searchDocuments(searchText, options = {}, nextPageParameters = {}) {\n const _a = options, { includeTotalCount, orderBy, searchFields, select, vectorSearchOptions, semanticSearchOptions } = _a, restOptions = __rest(_a, [\"includeTotalCount\", \"orderBy\", \"searchFields\", \"select\", \"vectorSearchOptions\", \"semanticSearchOptions\"]);\n const _b = semanticSearchOptions !== null && semanticSearchOptions !== void 0 ? semanticSearchOptions : {}, { configurationName, errorMode, answers, captions } = _b, restSemanticOptions = __rest(_b, [\"configurationName\", \"errorMode\", \"answers\", \"captions\"]);\n const _c = vectorSearchOptions !== null && vectorSearchOptions !== void 0 ? vectorSearchOptions : {}, { queries, filterMode } = _c, restVectorOptions = __rest(_c, [\"queries\", \"filterMode\"]);\n const fullOptions = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, restSemanticOptions), restVectorOptions), restOptions), nextPageParameters), { searchFields: this.convertSearchFields(searchFields), select: this.convertSelect(select) || \"*\", orderBy: this.convertOrderBy(orderBy), includeTotalResultCount: includeTotalCount, vectorQueries: queries === null || queries === void 0 ? void 0 : queries.map(this.convertVectorQuery.bind(this)), answers: this.convertQueryAnswers(answers), captions: this.convertQueryCaptions(captions), semanticErrorHandling: errorMode, semanticConfigurationName: configurationName, vectorFilterMode: filterMode });\n const { span, updatedOptions } = createSpan(\"SearchClient-searchDocuments\", options);\n try {\n const result = await this.client.documents.searchPost(Object.assign(Object.assign({}, fullOptions), { searchText: searchText }), updatedOptions);\n const _d = result, { results, nextLink, nextPageParameters: resultNextPageParameters, semanticPartialResponseReason: semanticErrorReason, semanticPartialResponseType: semanticSearchResultsType } = _d, restResult = __rest(_d, [\"results\", \"nextLink\", \"nextPageParameters\", \"semanticPartialResponseReason\", \"semanticPartialResponseType\"]);\n const modifiedResults = generatedSearchResultToPublicSearchResult(results);\n const converted = Object.assign(Object.assign({}, restResult), { results: modifiedResults, semanticErrorReason,\n semanticSearchResultsType, continuationToken: this.encodeContinuationToken(nextLink, resultNextPageParameters) });\n return deserialize(converted);\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n listSearchResultsPage(searchText, options = {}, settings = {}) {\n return __asyncGenerator(this, arguments, function* listSearchResultsPage_1() {\n let decodedContinuation = this.decodeContinuationToken(settings.continuationToken);\n let result = yield __await(this.searchDocuments(searchText, options, decodedContinuation === null || decodedContinuation === void 0 ? void 0 : decodedContinuation.nextPageParameters));\n yield yield __await(result);\n // Technically, we should also leverage nextLink, but the generated code\n // doesn't support this yet.\n while (result.continuationToken) {\n decodedContinuation = this.decodeContinuationToken(result.continuationToken);\n result = yield __await(this.searchDocuments(searchText, options, decodedContinuation === null || decodedContinuation === void 0 ? void 0 : decodedContinuation.nextPageParameters));\n yield yield __await(result);\n }\n });\n }\n listSearchResultsAll(firstPage, searchText, options = {}) {\n return __asyncGenerator(this, arguments, function* listSearchResultsAll_1() {\n var _a, e_1, _b, _c;\n yield __await(yield* __asyncDelegator(__asyncValues(firstPage.results)));\n if (firstPage.continuationToken) {\n try {\n for (var _d = true, _e = __asyncValues(this.listSearchResultsPage(searchText, options, {\n continuationToken: firstPage.continuationToken,\n })), _f; _f = yield __await(_e.next()), _a = _f.done, !_a; _d = true) {\n _c = _f.value;\n _d = false;\n const page = _c;\n yield __await(yield* __asyncDelegator(__asyncValues(page.results)));\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n }\n listSearchResults(firstPage, searchText, options = {}) {\n const iter = this.listSearchResultsAll(firstPage, searchText, options);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage: (settings = {}) => {\n return this.listSearchResultsPage(searchText, options, settings);\n },\n };\n }\n /**\n * Performs a search on the current index given\n * the specified arguments.\n * @param searchText - Text to search\n * @param options - Options for the search operation.\n * @example\n * ```ts\n * import {\n * AzureKeyCredential,\n * SearchClient,\n * SearchFieldArray,\n * } from \"@azure/search-documents\";\n *\n * type TModel = {\n * key: string;\n * azure?: { sdk: string | null } | null;\n * };\n *\n * const client = new SearchClient(\n * \"endpoint.azure\",\n * \"indexName\",\n * new AzureKeyCredential(\"key\")\n * );\n *\n * const select = [\"azure/sdk\"] as const;\n * const searchFields: SearchFieldArray = [\"azure/sdk\"];\n *\n * const searchResult = await client.search(\"searchText\", {\n * select,\n * searchFields,\n * });\n * ```\n */\n async search(searchText, options) {\n const { span, updatedOptions } = createSpan(\"SearchClient-search\", options);\n try {\n const pageResult = await this.searchDocuments(searchText, updatedOptions);\n return Object.assign(Object.assign({}, pageResult), { results: this.listSearchResults(pageResult, searchText, updatedOptions) });\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Returns a short list of suggestions based on the searchText\n * and specified suggester.\n * @param searchText - The search text to use to suggest documents. Must be at least 1 character, and no more than 100 characters.\n * @param suggesterName - The name of the suggester as specified in the suggesters collection that's part of the index definition.\n * @param options - Options for the suggest operation\n * @example\n * ```ts\n * import {\n * AzureKeyCredential,\n * SearchClient,\n * SearchFieldArray,\n * } from \"@azure/search-documents\";\n *\n * type TModel = {\n * key: string;\n * azure?: { sdk: string | null } | null;\n * };\n *\n * const client = new SearchClient(\n * \"endpoint.azure\",\n * \"indexName\",\n * new AzureKeyCredential(\"key\")\n * );\n *\n * const select = [\"azure/sdk\"] as const;\n * const searchFields: SearchFieldArray = [\"azure/sdk\"];\n *\n * const suggestResult = await client.suggest(\"searchText\", \"suggesterName\", {\n * select,\n * searchFields,\n * });\n * ```\n */\n async suggest(searchText, suggesterName, options = {}) {\n const { select, searchFields, orderBy } = options, nonFieldOptions = __rest(options, [\"select\", \"searchFields\", \"orderBy\"]);\n const fullOptions = Object.assign({ searchText: searchText, suggesterName: suggesterName, searchFields: this.convertSearchFields(searchFields), select: this.convertSelect(select), orderBy: this.convertOrderBy(orderBy) }, nonFieldOptions);\n if (!fullOptions.searchText) {\n throw new RangeError(\"searchText must be provided.\");\n }\n if (!fullOptions.suggesterName) {\n throw new RangeError(\"suggesterName must be provided.\");\n }\n const { span, updatedOptions } = createSpan(\"SearchClient-suggest\", options);\n try {\n const result = await this.client.documents.suggestPost(fullOptions, updatedOptions);\n const modifiedResult = generatedSuggestDocumentsResultToPublicSuggestDocumentsResult(result);\n return deserialize(modifiedResult);\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Retrieve a particular document from the index by key.\n * @param key - The primary key value of the document\n * @param options - Additional options\n */\n async getDocument(key, options = {}) {\n const { span, updatedOptions } = createSpan(\"SearchClient-getDocument\", options);\n try {\n const result = await this.client.documents.get(key, Object.assign(Object.assign({}, updatedOptions), { selectedFields: updatedOptions.selectedFields }));\n return deserialize(result);\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Perform a set of index modifications (upload, merge, mergeOrUpload, delete)\n * for the given set of documents.\n * This operation may partially succeed and not all document operations will\n * be reflected in the index. If you would like to treat this as an exception,\n * set the `throwOnAnyFailure` option to true.\n * For more details about how merging works, see: https://docs.microsoft.com/en-us/rest/api/searchservice/AddUpdate-or-Delete-Documents\n * @param batch - An array of actions to perform on the index.\n * @param options - Additional options.\n */\n async indexDocuments(\n // eslint-disable-next-line @azure/azure-sdk/ts-use-interface-parameters\n batch, options = {}) {\n const { span, updatedOptions } = createSpan(\"SearchClient-indexDocuments\", options);\n try {\n let status = 0;\n const result = await this.client.documents.index({ actions: serialize(batch.actions) }, Object.assign(Object.assign({}, updatedOptions), { onResponse: (rawResponse, flatResponse) => {\n status = rawResponse.status;\n if (updatedOptions.onResponse) {\n updatedOptions.onResponse(rawResponse, flatResponse);\n }\n } }));\n if (options.throwOnAnyFailure && status === 207) {\n throw result;\n }\n return result;\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Upload an array of documents to the index.\n * @param documents - The documents to upload.\n * @param options - Additional options.\n */\n async uploadDocuments(documents, options = {}) {\n const { span, updatedOptions } = createSpan(\"SearchClient-uploadDocuments\", options);\n const batch = new IndexDocumentsBatch();\n batch.upload(documents);\n try {\n return await this.indexDocuments(batch, updatedOptions);\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Update a set of documents in the index.\n * For more details about how merging works, see https://docs.microsoft.com/en-us/rest/api/searchservice/AddUpdate-or-Delete-Documents\n * @param documents - The updated documents.\n * @param options - Additional options.\n */\n async mergeDocuments(documents, options = {}) {\n const { span, updatedOptions } = createSpan(\"SearchClient-mergeDocuments\", options);\n const batch = new IndexDocumentsBatch();\n batch.merge(documents);\n try {\n return await this.indexDocuments(batch, updatedOptions);\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n /**\n * Update a set of documents in the index or upload them if they don't exist.\n * For more details about how merging works, see https://docs.microsoft.com/en-us/rest/api/searchservice/AddUpdate-or-Delete-Documents\n * @param documents - The updated documents.\n * @param options - Additional options.\n */\n async mergeOrUploadDocuments(documents, options = {}) {\n const { span, updatedOptions } = createSpan(\"SearchClient-mergeDocuments\", options);\n const batch = new IndexDocumentsBatch();\n batch.mergeOrUpload(documents);\n try {\n return await this.indexDocuments(batch, updatedOptions);\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n async deleteDocuments(keyNameOrDocuments, keyValuesOrOptions, options = {}) {\n const { span, updatedOptions } = createSpan(\"SearchClient-deleteDocuments\", options);\n const batch = new IndexDocumentsBatch();\n if (typeof keyNameOrDocuments === \"string\") {\n batch.delete(keyNameOrDocuments, keyValuesOrOptions);\n }\n else {\n batch.delete(keyNameOrDocuments);\n }\n try {\n return await this.indexDocuments(batch, updatedOptions);\n }\n catch (e) {\n span.setStatus({\n status: \"error\",\n error: e.message,\n });\n throw e;\n }\n finally {\n span.end();\n }\n }\n encodeContinuationToken(nextLink, nextPageParameters) {\n if (!nextLink || !nextPageParameters) {\n return undefined;\n }\n const payload = JSON.stringify({\n apiVersion: this.apiVersion,\n nextLink,\n nextPageParameters,\n });\n return encode(payload);\n }\n decodeContinuationToken(token) {\n if (!token) {\n return undefined;\n }\n const decodedToken = decode(token);\n try {\n const result = JSON.parse(decodedToken);\n if (result.apiVersion !== this.apiVersion) {\n throw new RangeError(`Continuation token uses unsupported apiVersion \"${this.apiVersion}\"`);\n }\n return {\n nextLink: result.nextLink,\n nextPageParameters: result.nextPageParameters,\n };\n }\n catch (e) {\n throw new Error(`Corrupted or invalid continuation token: ${decodedToken}`);\n }\n }\n convertSelect(select) {\n if (select) {\n return select.join(\",\");\n }\n return select;\n }\n convertVectorQueryFields(fields) {\n if (fields) {\n return fields.join(\",\");\n }\n return fields;\n }\n convertSearchFields(searchFields) {\n if (searchFields) {\n return searchFields.join(\",\");\n }\n return searchFields;\n }\n convertOrderBy(orderBy) {\n if (orderBy) {\n return orderBy.join(\",\");\n }\n return orderBy;\n }\n convertQueryAnswers(answers) {\n if (!answers) {\n return answers;\n }\n const config = [];\n const { answerType: output, count, threshold } = answers;\n if (count) {\n config.push(`count-${count}`);\n }\n if (threshold) {\n config.push(`threshold-${threshold}`);\n }\n if (config.length) {\n return output + `|${config.join(\",\")}`;\n }\n return output;\n }\n convertQueryCaptions(captions) {\n if (!captions) {\n return captions;\n }\n const config = [];\n const { captionType: output, highlight } = captions;\n if (highlight !== undefined) {\n config.push(`highlight-${highlight}`);\n }\n if (config.length) {\n return output + `|${config.join(\",\")}`;\n }\n return output;\n }\n convertVectorQuery(vectorQuery) {\n return Object.assign(Object.assign({}, vectorQuery), { fields: this.convertVectorQueryFields(vectorQuery === null || vectorQuery === void 0 ? void 0 : vectorQuery.fields) });\n }\n}\n\nconst createClient = (language, credentials) => {\n let endpointToUse = credentials?.endpoint ?? process.env.AZURE_AISEARCH_ENDPOINT ?? '';\n let keyToUse = credentials?.key ?? process.env.AZURE_AISEARCH_KEY ?? '';\n if (!endpointToUse) {\n throw new Error('Given endpoint or AZURE_AISEARCH_ENDPOINT environment variable is not set');\n }\n if (!keyToUse) {\n throw new Error('Given key or AZURE_AISEARCH_KEY environment variable is not set');\n }\n return new SearchClient(endpointToUse, language, new AzureKeyCredential(keyToUse));\n};\n\nconst search = (language, options, credentials, vector) => {\n const top = options.top ?? 100;\n const includeNonSearch = options.includeNonSearch ?? false;\n const highlight = options.highlight;\n const highlightPreTag = options.highlightPreTag;\n const highlightPostTag = options.highlightPostTag;\n let filterExpression = odata `markets/any(g:search.in(g, ${options.country.toUpperCase()})) and search.in(source, '${options.platforms}')`;\n if (!includeNonSearch) {\n filterExpression += ' ' + odata `and includeInSearch eq ${true}`;\n }\n let highlightOptions = {};\n if (highlight) {\n highlightOptions = {\n ...highlightOptions,\n highlightFields: highlight,\n highlightPreTag,\n highlightPostTag\n };\n }\n return createClient(language, credentials).search(options.question, {\n top: top,\n filter: filterExpression,\n vectorSearchOptions: {\n queries: [\n {\n kind: 'text',\n text: options.question,\n fields: ['contentPartVector', 'titleVector', 'descriptionVector'],\n kNearestNeighborsCount: vector ?? 5\n },\n ],\n },\n semanticSearchOptions: {\n configurationName: 'semantic-search-config',\n },\n queryType: 'semantic',\n ...highlightOptions\n });\n};\n\nfunction commonjsRequire(path) {\n\tthrow new Error('Could not dynamically require \"' + path + '\". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');\n}\n\nvar moment$1 = {exports: {}};\n\n(function (module, exports) {\n(function (global, factory) {\n\t module.exports = factory() ;\n\t}(commonjsGlobal, (function () {\n\t var hookCallback;\n\n\t function hooks() {\n\t return hookCallback.apply(null, arguments);\n\t }\n\n\t // This is done to register the method called with moment()\n\t // without creating circular dependencies.\n\t function setHookCallback(callback) {\n\t hookCallback = callback;\n\t }\n\n\t function isArray(input) {\n\t return (\n\t input instanceof Array ||\n\t Object.prototype.toString.call(input) === '[object Array]'\n\t );\n\t }\n\n\t function isObject(input) {\n\t // IE8 will treat undefined and null as object if it wasn't for\n\t // input != null\n\t return (\n\t input != null &&\n\t Object.prototype.toString.call(input) === '[object Object]'\n\t );\n\t }\n\n\t function hasOwnProp(a, b) {\n\t return Object.prototype.hasOwnProperty.call(a, b);\n\t }\n\n\t function isObjectEmpty(obj) {\n\t if (Object.getOwnPropertyNames) {\n\t return Object.getOwnPropertyNames(obj).length === 0;\n\t } else {\n\t var k;\n\t for (k in obj) {\n\t if (hasOwnProp(obj, k)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\t }\n\n\t function isUndefined(input) {\n\t return input === void 0;\n\t }\n\n\t function isNumber(input) {\n\t return (\n\t typeof input === 'number' ||\n\t Object.prototype.toString.call(input) === '[object Number]'\n\t );\n\t }\n\n\t function isDate(input) {\n\t return (\n\t input instanceof Date ||\n\t Object.prototype.toString.call(input) === '[object Date]'\n\t );\n\t }\n\n\t function map(arr, fn) {\n\t var res = [],\n\t i,\n\t arrLen = arr.length;\n\t for (i = 0; i < arrLen; ++i) {\n\t res.push(fn(arr[i], i));\n\t }\n\t return res;\n\t }\n\n\t function extend(a, b) {\n\t for (var i in b) {\n\t if (hasOwnProp(b, i)) {\n\t a[i] = b[i];\n\t }\n\t }\n\n\t if (hasOwnProp(b, 'toString')) {\n\t a.toString = b.toString;\n\t }\n\n\t if (hasOwnProp(b, 'valueOf')) {\n\t a.valueOf = b.valueOf;\n\t }\n\n\t return a;\n\t }\n\n\t function createUTC(input, format, locale, strict) {\n\t return createLocalOrUTC(input, format, locale, strict, true).utc();\n\t }\n\n\t function defaultParsingFlags() {\n\t // We need to deep clone this object.\n\t return {\n\t empty: false,\n\t unusedTokens: [],\n\t unusedInput: [],\n\t overflow: -2,\n\t charsLeftOver: 0,\n\t nullInput: false,\n\t invalidEra: null,\n\t invalidMonth: null,\n\t invalidFormat: false,\n\t userInvalidated: false,\n\t iso: false,\n\t parsedDateParts: [],\n\t era: null,\n\t meridiem: null,\n\t rfc2822: false,\n\t weekdayMismatch: false,\n\t };\n\t }\n\n\t function getParsingFlags(m) {\n\t if (m._pf == null) {\n\t m._pf = defaultParsingFlags();\n\t }\n\t return m._pf;\n\t }\n\n\t var some;\n\t if (Array.prototype.some) {\n\t some = Array.prototype.some;\n\t } else {\n\t some = function (fun) {\n\t var t = Object(this),\n\t len = t.length >>> 0,\n\t i;\n\n\t for (i = 0; i < len; i++) {\n\t if (i in t && fun.call(this, t[i], i, t)) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t };\n\t }\n\n\t function isValid(m) {\n\t var flags = null,\n\t parsedParts = false,\n\t isNowValid = m._d && !isNaN(m._d.getTime());\n\t if (isNowValid) {\n\t flags = getParsingFlags(m);\n\t parsedParts = some.call(flags.parsedDateParts, function (i) {\n\t return i != null;\n\t });\n\t isNowValid =\n\t flags.overflow < 0 &&\n\t !flags.empty &&\n\t !flags.invalidEra &&\n\t !flags.invalidMonth &&\n\t !flags.invalidWeekday &&\n\t !flags.weekdayMismatch &&\n\t !flags.nullInput &&\n\t !flags.invalidFormat &&\n\t !flags.userInvalidated &&\n\t (!flags.meridiem || (flags.meridiem && parsedParts));\n\t if (m._strict) {\n\t isNowValid =\n\t isNowValid &&\n\t flags.charsLeftOver === 0 &&\n\t flags.unusedTokens.length === 0 &&\n\t flags.bigHour === undefined;\n\t }\n\t }\n\t if (Object.isFrozen == null || !Object.isFrozen(m)) {\n\t m._isValid = isNowValid;\n\t } else {\n\t return isNowValid;\n\t }\n\t return m._isValid;\n\t }\n\n\t function createInvalid(flags) {\n\t var m = createUTC(NaN);\n\t if (flags != null) {\n\t extend(getParsingFlags(m), flags);\n\t } else {\n\t getParsingFlags(m).userInvalidated = true;\n\t }\n\n\t return m;\n\t }\n\n\t // Plugins that add properties should also add the key here (null value),\n\t // so we can properly clone ourselves.\n\t var momentProperties = (hooks.momentProperties = []),\n\t updateInProgress = false;\n\n\t function copyConfig(to, from) {\n\t var i,\n\t prop,\n\t val,\n\t momentPropertiesLen = momentProperties.length;\n\n\t if (!isUndefined(from._isAMomentObject)) {\n\t to._isAMomentObject = from._isAMomentObject;\n\t }\n\t if (!isUndefined(from._i)) {\n\t to._i = from._i;\n\t }\n\t if (!isUndefined(from._f)) {\n\t to._f = from._f;\n\t }\n\t if (!isUndefined(from._l)) {\n\t to._l = from._l;\n\t }\n\t if (!isUndefined(from._strict)) {\n\t to._strict = from._strict;\n\t }\n\t if (!isUndefined(from._tzm)) {\n\t to._tzm = from._tzm;\n\t }\n\t if (!isUndefined(from._isUTC)) {\n\t to._isUTC = from._isUTC;\n\t }\n\t if (!isUndefined(from._offset)) {\n\t to._offset = from._offset;\n\t }\n\t if (!isUndefined(from._pf)) {\n\t to._pf = getParsingFlags(from);\n\t }\n\t if (!isUndefined(from._locale)) {\n\t to._locale = from._locale;\n\t }\n\n\t if (momentPropertiesLen > 0) {\n\t for (i = 0; i < momentPropertiesLen; i++) {\n\t prop = momentProperties[i];\n\t val = from[prop];\n\t if (!isUndefined(val)) {\n\t to[prop] = val;\n\t }\n\t }\n\t }\n\n\t return to;\n\t }\n\n\t // Moment prototype object\n\t function Moment(config) {\n\t copyConfig(this, config);\n\t this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n\t if (!this.isValid()) {\n\t this._d = new Date(NaN);\n\t }\n\t // Prevent infinite loop in case updateOffset creates new moment\n\t // objects.\n\t if (updateInProgress === false) {\n\t updateInProgress = true;\n\t hooks.updateOffset(this);\n\t updateInProgress = false;\n\t }\n\t }\n\n\t function isMoment(obj) {\n\t return (\n\t obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n\t );\n\t }\n\n\t function warn(msg) {\n\t if (\n\t hooks.suppressDeprecationWarnings === false &&\n\t typeof console !== 'undefined' &&\n\t console.warn\n\t ) {\n\t console.warn('Deprecation warning: ' + msg);\n\t }\n\t }\n\n\t function deprecate(msg, fn) {\n\t var firstTime = true;\n\n\t return extend(function () {\n\t if (hooks.deprecationHandler != null) {\n\t hooks.deprecationHandler(null, msg);\n\t }\n\t if (firstTime) {\n\t var args = [],\n\t arg,\n\t i,\n\t key,\n\t argLen = arguments.length;\n\t for (i = 0; i < argLen; i++) {\n\t arg = '';\n\t if (typeof arguments[i] === 'object') {\n\t arg += '\\n[' + i + '] ';\n\t for (key in arguments[0]) {\n\t if (hasOwnProp(arguments[0], key)) {\n\t arg += key + ': ' + arguments[0][key] + ', ';\n\t }\n\t }\n\t arg = arg.slice(0, -2); // Remove trailing comma and space\n\t } else {\n\t arg = arguments[i];\n\t }\n\t args.push(arg);\n\t }\n\t warn(\n\t msg +\n\t '\\nArguments: ' +\n\t Array.prototype.slice.call(args).join('') +\n\t '\\n' +\n\t new Error().stack\n\t );\n\t firstTime = false;\n\t }\n\t return fn.apply(this, arguments);\n\t }, fn);\n\t }\n\n\t var deprecations = {};\n\n\t function deprecateSimple(name, msg) {\n\t if (hooks.deprecationHandler != null) {\n\t hooks.deprecationHandler(name, msg);\n\t }\n\t if (!deprecations[name]) {\n\t warn(msg);\n\t deprecations[name] = true;\n\t }\n\t }\n\n\t hooks.suppressDeprecationWarnings = false;\n\t hooks.deprecationHandler = null;\n\n\t function isFunction(input) {\n\t return (\n\t (typeof Function !== 'undefined' && input instanceof Function) ||\n\t Object.prototype.toString.call(input) === '[object Function]'\n\t );\n\t }\n\n\t function set(config) {\n\t var prop, i;\n\t for (i in config) {\n\t if (hasOwnProp(config, i)) {\n\t prop = config[i];\n\t if (isFunction(prop)) {\n\t this[i] = prop;\n\t } else {\n\t this['_' + i] = prop;\n\t }\n\t }\n\t }\n\t this._config = config;\n\t // Lenient ordinal parsing accepts just a number in addition to\n\t // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n\t // TODO: Remove \"ordinalParse\" fallback in next major release.\n\t this._dayOfMonthOrdinalParseLenient = new RegExp(\n\t (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n\t '|' +\n\t /\\d{1,2}/.source\n\t );\n\t }\n\n\t function mergeConfigs(parentConfig, childConfig) {\n\t var res = extend({}, parentConfig),\n\t prop;\n\t for (prop in childConfig) {\n\t if (hasOwnProp(childConfig, prop)) {\n\t if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n\t res[prop] = {};\n\t extend(res[prop], parentConfig[prop]);\n\t extend(res[prop], childConfig[prop]);\n\t } else if (childConfig[prop] != null) {\n\t res[prop] = childConfig[prop];\n\t } else {\n\t delete res[prop];\n\t }\n\t }\n\t }\n\t for (prop in parentConfig) {\n\t if (\n\t hasOwnProp(parentConfig, prop) &&\n\t !hasOwnProp(childConfig, prop) &&\n\t isObject(parentConfig[prop])\n\t ) {\n\t // make sure changes to properties don't modify parent config\n\t res[prop] = extend({}, res[prop]);\n\t }\n\t }\n\t return res;\n\t }\n\n\t function Locale(config) {\n\t if (config != null) {\n\t this.set(config);\n\t }\n\t }\n\n\t var keys;\n\n\t if (Object.keys) {\n\t keys = Object.keys;\n\t } else {\n\t keys = function (obj) {\n\t var i,\n\t res = [];\n\t for (i in obj) {\n\t if (hasOwnProp(obj, i)) {\n\t res.push(i);\n\t }\n\t }\n\t return res;\n\t };\n\t }\n\n\t var defaultCalendar = {\n\t sameDay: '[Today at] LT',\n\t nextDay: '[Tomorrow at] LT',\n\t nextWeek: 'dddd [at] LT',\n\t lastDay: '[Yesterday at] LT',\n\t lastWeek: '[Last] dddd [at] LT',\n\t sameElse: 'L',\n\t };\n\n\t function calendar(key, mom, now) {\n\t var output = this._calendar[key] || this._calendar['sameElse'];\n\t return isFunction(output) ? output.call(mom, now) : output;\n\t }\n\n\t function zeroFill(number, targetLength, forceSign) {\n\t var absNumber = '' + Math.abs(number),\n\t zerosToFill = targetLength - absNumber.length,\n\t sign = number >= 0;\n\t return (\n\t (sign ? (forceSign ? '+' : '') : '-') +\n\t Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n\t absNumber\n\t );\n\t }\n\n\t var formattingTokens =\n\t /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n\t localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n\t formatFunctions = {},\n\t formatTokenFunctions = {};\n\n\t // token: 'M'\n\t // padded: ['MM', 2]\n\t // ordinal: 'Mo'\n\t // callback: function () { this.month() + 1 }\n\t function addFormatToken(token, padded, ordinal, callback) {\n\t var func = callback;\n\t if (typeof callback === 'string') {\n\t func = function () {\n\t return this[callback]();\n\t };\n\t }\n\t if (token) {\n\t formatTokenFunctions[token] = func;\n\t }\n\t if (padded) {\n\t formatTokenFunctions[padded[0]] = function () {\n\t return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n\t };\n\t }\n\t if (ordinal) {\n\t formatTokenFunctions[ordinal] = function () {\n\t return this.localeData().ordinal(\n\t func.apply(this, arguments),\n\t token\n\t );\n\t };\n\t }\n\t }\n\n\t function removeFormattingTokens(input) {\n\t if (input.match(/\\[[\\s\\S]/)) {\n\t return input.replace(/^\\[|\\]$/g, '');\n\t }\n\t return input.replace(/\\\\/g, '');\n\t }\n\n\t function makeFormatFunction(format) {\n\t var array = format.match(formattingTokens),\n\t i,\n\t length;\n\n\t for (i = 0, length = array.length; i < length; i++) {\n\t if (formatTokenFunctions[array[i]]) {\n\t array[i] = formatTokenFunctions[array[i]];\n\t } else {\n\t array[i] = removeFormattingTokens(array[i]);\n\t }\n\t }\n\n\t return function (mom) {\n\t var output = '',\n\t i;\n\t for (i = 0; i < length; i++) {\n\t output += isFunction(array[i])\n\t ? array[i].call(mom, format)\n\t : array[i];\n\t }\n\t return output;\n\t };\n\t }\n\n\t // format date using native date object\n\t function formatMoment(m, format) {\n\t if (!m.isValid()) {\n\t return m.localeData().invalidDate();\n\t }\n\n\t format = expandFormat(format, m.localeData());\n\t formatFunctions[format] =\n\t formatFunctions[format] || makeFormatFunction(format);\n\n\t return formatFunctions[format](m);\n\t }\n\n\t function expandFormat(format, locale) {\n\t var i = 5;\n\n\t function replaceLongDateFormatTokens(input) {\n\t return locale.longDateFormat(input) || input;\n\t }\n\n\t localFormattingTokens.lastIndex = 0;\n\t while (i >= 0 && localFormattingTokens.test(format)) {\n\t format = format.replace(\n\t localFormattingTokens,\n\t replaceLongDateFormatTokens\n\t );\n\t localFormattingTokens.lastIndex = 0;\n\t i -= 1;\n\t }\n\n\t return format;\n\t }\n\n\t var defaultLongDateFormat = {\n\t LTS: 'h:mm:ss A',\n\t LT: 'h:mm A',\n\t L: 'MM/DD/YYYY',\n\t LL: 'MMMM D, YYYY',\n\t LLL: 'MMMM D, YYYY h:mm A',\n\t LLLL: 'dddd, MMMM D, YYYY h:mm A',\n\t };\n\n\t function longDateFormat(key) {\n\t var format = this._longDateFormat[key],\n\t formatUpper = this._longDateFormat[key.toUpperCase()];\n\n\t if (format || !formatUpper) {\n\t return format;\n\t }\n\n\t this._longDateFormat[key] = formatUpper\n\t .match(formattingTokens)\n\t .map(function (tok) {\n\t if (\n\t tok === 'MMMM' ||\n\t tok === 'MM' ||\n\t tok === 'DD' ||\n\t tok === 'dddd'\n\t ) {\n\t return tok.slice(1);\n\t }\n\t return tok;\n\t })\n\t .join('');\n\n\t return this._longDateFormat[key];\n\t }\n\n\t var defaultInvalidDate = 'Invalid date';\n\n\t function invalidDate() {\n\t return this._invalidDate;\n\t }\n\n\t var defaultOrdinal = '%d',\n\t defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n\t function ordinal(number) {\n\t return this._ordinal.replace('%d', number);\n\t }\n\n\t var defaultRelativeTime = {\n\t future: 'in %s',\n\t past: '%s ago',\n\t s: 'a few seconds',\n\t ss: '%d seconds',\n\t m: 'a minute',\n\t mm: '%d minutes',\n\t h: 'an hour',\n\t hh: '%d hours',\n\t d: 'a day',\n\t dd: '%d days',\n\t w: 'a week',\n\t ww: '%d weeks',\n\t M: 'a month',\n\t MM: '%d months',\n\t y: 'a year',\n\t yy: '%d years',\n\t };\n\n\t function relativeTime(number, withoutSuffix, string, isFuture) {\n\t var output = this._relativeTime[string];\n\t return isFunction(output)\n\t ? output(number, withoutSuffix, string, isFuture)\n\t : output.replace(/%d/i, number);\n\t }\n\n\t function pastFuture(diff, output) {\n\t var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n\t return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n\t }\n\n\t var aliases = {\n\t D: 'date',\n\t dates: 'date',\n\t date: 'date',\n\t d: 'day',\n\t days: 'day',\n\t day: 'day',\n\t e: 'weekday',\n\t weekdays: 'weekday',\n\t weekday: 'weekday',\n\t E: 'isoWeekday',\n\t isoweekdays: 'isoWeekday',\n\t isoweekday: 'isoWeekday',\n\t DDD: 'dayOfYear',\n\t dayofyears: 'dayOfYear',\n\t dayofyear: 'dayOfYear',\n\t h: 'hour',\n\t hours: 'hour',\n\t hour: 'hour',\n\t ms: 'millisecond',\n\t milliseconds: 'millisecond',\n\t millisecond: 'millisecond',\n\t m: 'minute',\n\t minutes: 'minute',\n\t minute: 'minute',\n\t M: 'month',\n\t months: 'month',\n\t month: 'month',\n\t Q: 'quarter',\n\t quarters: 'quarter',\n\t quarter: 'quarter',\n\t s: 'second',\n\t seconds: 'second',\n\t second: 'second',\n\t gg: 'weekYear',\n\t weekyears: 'weekYear',\n\t weekyear: 'weekYear',\n\t GG: 'isoWeekYear',\n\t isoweekyears: 'isoWeekYear',\n\t isoweekyear: 'isoWeekYear',\n\t w: 'week',\n\t weeks: 'week',\n\t week: 'week',\n\t W: 'isoWeek',\n\t isoweeks: 'isoWeek',\n\t isoweek: 'isoWeek',\n\t y: 'year',\n\t years: 'year',\n\t year: 'year',\n\t };\n\n\t function normalizeUnits(units) {\n\t return typeof units === 'string'\n\t ? aliases[units] || aliases[units.toLowerCase()]\n\t : undefined;\n\t }\n\n\t function normalizeObjectUnits(inputObject) {\n\t var normalizedInput = {},\n\t normalizedProp,\n\t prop;\n\n\t for (prop in inputObject) {\n\t if (hasOwnProp(inputObject, prop)) {\n\t normalizedProp = normalizeUnits(prop);\n\t if (normalizedProp) {\n\t normalizedInput[normalizedProp] = inputObject[prop];\n\t }\n\t }\n\t }\n\n\t return normalizedInput;\n\t }\n\n\t var priorities = {\n\t date: 9,\n\t day: 11,\n\t weekday: 11,\n\t isoWeekday: 11,\n\t dayOfYear: 4,\n\t hour: 13,\n\t millisecond: 16,\n\t minute: 14,\n\t month: 8,\n\t quarter: 7,\n\t second: 15,\n\t weekYear: 1,\n\t isoWeekYear: 1,\n\t week: 5,\n\t isoWeek: 5,\n\t year: 1,\n\t };\n\n\t function getPrioritizedUnits(unitsObj) {\n\t var units = [],\n\t u;\n\t for (u in unitsObj) {\n\t if (hasOwnProp(unitsObj, u)) {\n\t units.push({ unit: u, priority: priorities[u] });\n\t }\n\t }\n\t units.sort(function (a, b) {\n\t return a.priority - b.priority;\n\t });\n\t return units;\n\t }\n\n\t var match1 = /\\d/, // 0 - 9\n\t match2 = /\\d\\d/, // 00 - 99\n\t match3 = /\\d{3}/, // 000 - 999\n\t match4 = /\\d{4}/, // 0000 - 9999\n\t match6 = /[+-]?\\d{6}/, // -999999 - 999999\n\t match1to2 = /\\d\\d?/, // 0 - 99\n\t match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n\t match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n\t match1to3 = /\\d{1,3}/, // 0 - 999\n\t match1to4 = /\\d{1,4}/, // 0 - 9999\n\t match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n\t matchUnsigned = /\\d+/, // 0 - inf\n\t matchSigned = /[+-]?\\d+/, // -inf - inf\n\t matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n\t matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n\t matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n\t // any word (or two) characters or numbers including two/three word month in arabic.\n\t // includes scottish gaelic two word and hyphenated months\n\t matchWord =\n\t /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n\t match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n\t match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n\t regexes;\n\n\t regexes = {};\n\n\t function addRegexToken(token, regex, strictRegex) {\n\t regexes[token] = isFunction(regex)\n\t ? regex\n\t : function (isStrict, localeData) {\n\t return isStrict && strictRegex ? strictRegex : regex;\n\t };\n\t }\n\n\t function getParseRegexForToken(token, config) {\n\t if (!hasOwnProp(regexes, token)) {\n\t return new RegExp(unescapeFormat(token));\n\t }\n\n\t return regexes[token](config._strict, config._locale);\n\t }\n\n\t // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n\t function unescapeFormat(s) {\n\t return regexEscape(\n\t s\n\t .replace('\\\\', '')\n\t .replace(\n\t /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n\t function (matched, p1, p2, p3, p4) {\n\t return p1 || p2 || p3 || p4;\n\t }\n\t )\n\t );\n\t }\n\n\t function regexEscape(s) {\n\t return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t }\n\n\t function absFloor(number) {\n\t if (number < 0) {\n\t // -0 -> 0\n\t return Math.ceil(number) || 0;\n\t } else {\n\t return Math.floor(number);\n\t }\n\t }\n\n\t function toInt(argumentForCoercion) {\n\t var coercedNumber = +argumentForCoercion,\n\t value = 0;\n\n\t if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n\t value = absFloor(coercedNumber);\n\t }\n\n\t return value;\n\t }\n\n\t var tokens = {};\n\n\t function addParseToken(token, callback) {\n\t var i,\n\t func = callback,\n\t tokenLen;\n\t if (typeof token === 'string') {\n\t token = [token];\n\t }\n\t if (isNumber(callback)) {\n\t func = function (input, array) {\n\t array[callback] = toInt(input);\n\t };\n\t }\n\t tokenLen = token.length;\n\t for (i = 0; i < tokenLen; i++) {\n\t tokens[token[i]] = func;\n\t }\n\t }\n\n\t function addWeekParseToken(token, callback) {\n\t addParseToken(token, function (input, array, config, token) {\n\t config._w = config._w || {};\n\t callback(input, config._w, config, token);\n\t });\n\t }\n\n\t function addTimeToArrayFromToken(token, input, config) {\n\t if (input != null && hasOwnProp(tokens, token)) {\n\t tokens[token](input, config._a, config, token);\n\t }\n\t }\n\n\t function isLeapYear(year) {\n\t return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n\t }\n\n\t var YEAR = 0,\n\t MONTH = 1,\n\t DATE = 2,\n\t HOUR = 3,\n\t MINUTE = 4,\n\t SECOND = 5,\n\t MILLISECOND = 6,\n\t WEEK = 7,\n\t WEEKDAY = 8;\n\n\t // FORMATTING\n\n\t addFormatToken('Y', 0, 0, function () {\n\t var y = this.year();\n\t return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n\t });\n\n\t addFormatToken(0, ['YY', 2], 0, function () {\n\t return this.year() % 100;\n\t });\n\n\t addFormatToken(0, ['YYYY', 4], 0, 'year');\n\t addFormatToken(0, ['YYYYY', 5], 0, 'year');\n\t addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n\t // PARSING\n\n\t addRegexToken('Y', matchSigned);\n\t addRegexToken('YY', match1to2, match2);\n\t addRegexToken('YYYY', match1to4, match4);\n\t addRegexToken('YYYYY', match1to6, match6);\n\t addRegexToken('YYYYYY', match1to6, match6);\n\n\t addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n\t addParseToken('YYYY', function (input, array) {\n\t array[YEAR] =\n\t input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n\t });\n\t addParseToken('YY', function (input, array) {\n\t array[YEAR] = hooks.parseTwoDigitYear(input);\n\t });\n\t addParseToken('Y', function (input, array) {\n\t array[YEAR] = parseInt(input, 10);\n\t });\n\n\t // HELPERS\n\n\t function daysInYear(year) {\n\t return isLeapYear(year) ? 366 : 365;\n\t }\n\n\t // HOOKS\n\n\t hooks.parseTwoDigitYear = function (input) {\n\t return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n\t };\n\n\t // MOMENTS\n\n\t var getSetYear = makeGetSet('FullYear', true);\n\n\t function getIsLeapYear() {\n\t return isLeapYear(this.year());\n\t }\n\n\t function makeGetSet(unit, keepTime) {\n\t return function (value) {\n\t if (value != null) {\n\t set$1(this, unit, value);\n\t hooks.updateOffset(this, keepTime);\n\t return this;\n\t } else {\n\t return get(this, unit);\n\t }\n\t };\n\t }\n\n\t function get(mom, unit) {\n\t if (!mom.isValid()) {\n\t return NaN;\n\t }\n\n\t var d = mom._d,\n\t isUTC = mom._isUTC;\n\n\t switch (unit) {\n\t case 'Milliseconds':\n\t return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n\t case 'Seconds':\n\t return isUTC ? d.getUTCSeconds() : d.getSeconds();\n\t case 'Minutes':\n\t return isUTC ? d.getUTCMinutes() : d.getMinutes();\n\t case 'Hours':\n\t return isUTC ? d.getUTCHours() : d.getHours();\n\t case 'Date':\n\t return isUTC ? d.getUTCDate() : d.getDate();\n\t case 'Day':\n\t return isUTC ? d.getUTCDay() : d.getDay();\n\t case 'Month':\n\t return isUTC ? d.getUTCMonth() : d.getMonth();\n\t case 'FullYear':\n\t return isUTC ? d.getUTCFullYear() : d.getFullYear();\n\t default:\n\t return NaN; // Just in case\n\t }\n\t }\n\n\t function set$1(mom, unit, value) {\n\t var d, isUTC, year, month, date;\n\n\t if (!mom.isValid() || isNaN(value)) {\n\t return;\n\t }\n\n\t d = mom._d;\n\t isUTC = mom._isUTC;\n\n\t switch (unit) {\n\t case 'Milliseconds':\n\t return void (isUTC\n\t ? d.setUTCMilliseconds(value)\n\t : d.setMilliseconds(value));\n\t case 'Seconds':\n\t return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n\t case 'Minutes':\n\t return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n\t case 'Hours':\n\t return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n\t case 'Date':\n\t return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n\t // case 'Day': // Not real\n\t // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n\t // case 'Month': // Not used because we need to pass two variables\n\t // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n\t case 'FullYear':\n\t break; // See below ...\n\t default:\n\t return; // Just in case\n\t }\n\n\t year = value;\n\t month = mom.month();\n\t date = mom.date();\n\t date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n\t void (isUTC\n\t ? d.setUTCFullYear(year, month, date)\n\t : d.setFullYear(year, month, date));\n\t }\n\n\t // MOMENTS\n\n\t function stringGet(units) {\n\t units = normalizeUnits(units);\n\t if (isFunction(this[units])) {\n\t return this[units]();\n\t }\n\t return this;\n\t }\n\n\t function stringSet(units, value) {\n\t if (typeof units === 'object') {\n\t units = normalizeObjectUnits(units);\n\t var prioritized = getPrioritizedUnits(units),\n\t i,\n\t prioritizedLen = prioritized.length;\n\t for (i = 0; i < prioritizedLen; i++) {\n\t this[prioritized[i].unit](units[prioritized[i].unit]);\n\t }\n\t } else {\n\t units = normalizeUnits(units);\n\t if (isFunction(this[units])) {\n\t return this[units](value);\n\t }\n\t }\n\t return this;\n\t }\n\n\t function mod(n, x) {\n\t return ((n % x) + x) % x;\n\t }\n\n\t var indexOf;\n\n\t if (Array.prototype.indexOf) {\n\t indexOf = Array.prototype.indexOf;\n\t } else {\n\t indexOf = function (o) {\n\t // I know\n\t var i;\n\t for (i = 0; i < this.length; ++i) {\n\t if (this[i] === o) {\n\t return i;\n\t }\n\t }\n\t return -1;\n\t };\n\t }\n\n\t function daysInMonth(year, month) {\n\t if (isNaN(year) || isNaN(month)) {\n\t return NaN;\n\t }\n\t var modMonth = mod(month, 12);\n\t year += (month - modMonth) / 12;\n\t return modMonth === 1\n\t ? isLeapYear(year)\n\t ? 29\n\t : 28\n\t : 31 - ((modMonth % 7) % 2);\n\t }\n\n\t // FORMATTING\n\n\t addFormatToken('M', ['MM', 2], 'Mo', function () {\n\t return this.month() + 1;\n\t });\n\n\t addFormatToken('MMM', 0, 0, function (format) {\n\t return this.localeData().monthsShort(this, format);\n\t });\n\n\t addFormatToken('MMMM', 0, 0, function (format) {\n\t return this.localeData().months(this, format);\n\t });\n\n\t // PARSING\n\n\t addRegexToken('M', match1to2, match1to2NoLeadingZero);\n\t addRegexToken('MM', match1to2, match2);\n\t addRegexToken('MMM', function (isStrict, locale) {\n\t return locale.monthsShortRegex(isStrict);\n\t });\n\t addRegexToken('MMMM', function (isStrict, locale) {\n\t return locale.monthsRegex(isStrict);\n\t });\n\n\t addParseToken(['M', 'MM'], function (input, array) {\n\t array[MONTH] = toInt(input) - 1;\n\t });\n\n\t addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n\t var month = config._locale.monthsParse(input, token, config._strict);\n\t // if we didn't find a month name, mark the date as invalid.\n\t if (month != null) {\n\t array[MONTH] = month;\n\t } else {\n\t getParsingFlags(config).invalidMonth = input;\n\t }\n\t });\n\n\t // LOCALES\n\n\t var defaultLocaleMonths =\n\t 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n\t '_'\n\t ),\n\t defaultLocaleMonthsShort =\n\t 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n\t MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n\t defaultMonthsShortRegex = matchWord,\n\t defaultMonthsRegex = matchWord;\n\n\t function localeMonths(m, format) {\n\t if (!m) {\n\t return isArray(this._months)\n\t ? this._months\n\t : this._months['standalone'];\n\t }\n\t return isArray(this._months)\n\t ? this._months[m.month()]\n\t : this._months[\n\t (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n\t ? 'format'\n\t : 'standalone'\n\t ][m.month()];\n\t }\n\n\t function localeMonthsShort(m, format) {\n\t if (!m) {\n\t return isArray(this._monthsShort)\n\t ? this._monthsShort\n\t : this._monthsShort['standalone'];\n\t }\n\t return isArray(this._monthsShort)\n\t ? this._monthsShort[m.month()]\n\t : this._monthsShort[\n\t MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n\t ][m.month()];\n\t }\n\n\t function handleStrictParse(monthName, format, strict) {\n\t var i,\n\t ii,\n\t mom,\n\t llc = monthName.toLocaleLowerCase();\n\t if (!this._monthsParse) {\n\t // this is not used\n\t this._monthsParse = [];\n\t this._longMonthsParse = [];\n\t this._shortMonthsParse = [];\n\t for (i = 0; i < 12; ++i) {\n\t mom = createUTC([2000, i]);\n\t this._shortMonthsParse[i] = this.monthsShort(\n\t mom,\n\t ''\n\t ).toLocaleLowerCase();\n\t this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n\t }\n\t }\n\n\t if (strict) {\n\t if (format === 'MMM') {\n\t ii = indexOf.call(this._shortMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._longMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t } else {\n\t if (format === 'MMM') {\n\t ii = indexOf.call(this._shortMonthsParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._longMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._longMonthsParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._shortMonthsParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t }\n\t }\n\n\t function localeMonthsParse(monthName, format, strict) {\n\t var i, mom, regex;\n\n\t if (this._monthsParseExact) {\n\t return handleStrictParse.call(this, monthName, format, strict);\n\t }\n\n\t if (!this._monthsParse) {\n\t this._monthsParse = [];\n\t this._longMonthsParse = [];\n\t this._shortMonthsParse = [];\n\t }\n\n\t // TODO: add sorting\n\t // Sorting makes sure if one month (or abbr) is a prefix of another\n\t // see sorting in computeMonthsParse\n\t for (i = 0; i < 12; i++) {\n\t // make the regex if we don't have it already\n\t mom = createUTC([2000, i]);\n\t if (strict && !this._longMonthsParse[i]) {\n\t this._longMonthsParse[i] = new RegExp(\n\t '^' + this.months(mom, '').replace('.', '') + '$',\n\t 'i'\n\t );\n\t this._shortMonthsParse[i] = new RegExp(\n\t '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n\t 'i'\n\t );\n\t }\n\t if (!strict && !this._monthsParse[i]) {\n\t regex =\n\t '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n\t this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n\t }\n\t // test the regex\n\t if (\n\t strict &&\n\t format === 'MMMM' &&\n\t this._longMonthsParse[i].test(monthName)\n\t ) {\n\t return i;\n\t } else if (\n\t strict &&\n\t format === 'MMM' &&\n\t this._shortMonthsParse[i].test(monthName)\n\t ) {\n\t return i;\n\t } else if (!strict && this._monthsParse[i].test(monthName)) {\n\t return i;\n\t }\n\t }\n\t }\n\n\t // MOMENTS\n\n\t function setMonth(mom, value) {\n\t if (!mom.isValid()) {\n\t // No op\n\t return mom;\n\t }\n\n\t if (typeof value === 'string') {\n\t if (/^\\d+$/.test(value)) {\n\t value = toInt(value);\n\t } else {\n\t value = mom.localeData().monthsParse(value);\n\t // TODO: Another silent failure?\n\t if (!isNumber(value)) {\n\t return mom;\n\t }\n\t }\n\t }\n\n\t var month = value,\n\t date = mom.date();\n\n\t date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n\t void (mom._isUTC\n\t ? mom._d.setUTCMonth(month, date)\n\t : mom._d.setMonth(month, date));\n\t return mom;\n\t }\n\n\t function getSetMonth(value) {\n\t if (value != null) {\n\t setMonth(this, value);\n\t hooks.updateOffset(this, true);\n\t return this;\n\t } else {\n\t return get(this, 'Month');\n\t }\n\t }\n\n\t function getDaysInMonth() {\n\t return daysInMonth(this.year(), this.month());\n\t }\n\n\t function monthsShortRegex(isStrict) {\n\t if (this._monthsParseExact) {\n\t if (!hasOwnProp(this, '_monthsRegex')) {\n\t computeMonthsParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._monthsShortStrictRegex;\n\t } else {\n\t return this._monthsShortRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_monthsShortRegex')) {\n\t this._monthsShortRegex = defaultMonthsShortRegex;\n\t }\n\t return this._monthsShortStrictRegex && isStrict\n\t ? this._monthsShortStrictRegex\n\t : this._monthsShortRegex;\n\t }\n\t }\n\n\t function monthsRegex(isStrict) {\n\t if (this._monthsParseExact) {\n\t if (!hasOwnProp(this, '_monthsRegex')) {\n\t computeMonthsParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._monthsStrictRegex;\n\t } else {\n\t return this._monthsRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_monthsRegex')) {\n\t this._monthsRegex = defaultMonthsRegex;\n\t }\n\t return this._monthsStrictRegex && isStrict\n\t ? this._monthsStrictRegex\n\t : this._monthsRegex;\n\t }\n\t }\n\n\t function computeMonthsParse() {\n\t function cmpLenRev(a, b) {\n\t return b.length - a.length;\n\t }\n\n\t var shortPieces = [],\n\t longPieces = [],\n\t mixedPieces = [],\n\t i,\n\t mom,\n\t shortP,\n\t longP;\n\t for (i = 0; i < 12; i++) {\n\t // make the regex if we don't have it already\n\t mom = createUTC([2000, i]);\n\t shortP = regexEscape(this.monthsShort(mom, ''));\n\t longP = regexEscape(this.months(mom, ''));\n\t shortPieces.push(shortP);\n\t longPieces.push(longP);\n\t mixedPieces.push(longP);\n\t mixedPieces.push(shortP);\n\t }\n\t // Sorting makes sure if one month (or abbr) is a prefix of another it\n\t // will match the longer piece.\n\t shortPieces.sort(cmpLenRev);\n\t longPieces.sort(cmpLenRev);\n\t mixedPieces.sort(cmpLenRev);\n\n\t this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n\t this._monthsShortRegex = this._monthsRegex;\n\t this._monthsStrictRegex = new RegExp(\n\t '^(' + longPieces.join('|') + ')',\n\t 'i'\n\t );\n\t this._monthsShortStrictRegex = new RegExp(\n\t '^(' + shortPieces.join('|') + ')',\n\t 'i'\n\t );\n\t }\n\n\t function createDate(y, m, d, h, M, s, ms) {\n\t // can't just apply() to create a date:\n\t // https://stackoverflow.com/q/181348\n\t var date;\n\t // the date constructor remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t // preserve leap years using a full 400 year cycle, then reset\n\t date = new Date(y + 400, m, d, h, M, s, ms);\n\t if (isFinite(date.getFullYear())) {\n\t date.setFullYear(y);\n\t }\n\t } else {\n\t date = new Date(y, m, d, h, M, s, ms);\n\t }\n\n\t return date;\n\t }\n\n\t function createUTCDate(y) {\n\t var date, args;\n\t // the Date.UTC function remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t args = Array.prototype.slice.call(arguments);\n\t // preserve leap years using a full 400 year cycle, then reset\n\t args[0] = y + 400;\n\t date = new Date(Date.UTC.apply(null, args));\n\t if (isFinite(date.getUTCFullYear())) {\n\t date.setUTCFullYear(y);\n\t }\n\t } else {\n\t date = new Date(Date.UTC.apply(null, arguments));\n\t }\n\n\t return date;\n\t }\n\n\t // start-of-first-week - start-of-year\n\t function firstWeekOffset(year, dow, doy) {\n\t var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n\t fwd = 7 + dow - doy,\n\t // first-week day local weekday -- which local weekday is fwd\n\t fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n\t return -fwdlw + fwd - 1;\n\t }\n\n\t // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n\t function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n\t var localWeekday = (7 + weekday - dow) % 7,\n\t weekOffset = firstWeekOffset(year, dow, doy),\n\t dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n\t resYear,\n\t resDayOfYear;\n\n\t if (dayOfYear <= 0) {\n\t resYear = year - 1;\n\t resDayOfYear = daysInYear(resYear) + dayOfYear;\n\t } else if (dayOfYear > daysInYear(year)) {\n\t resYear = year + 1;\n\t resDayOfYear = dayOfYear - daysInYear(year);\n\t } else {\n\t resYear = year;\n\t resDayOfYear = dayOfYear;\n\t }\n\n\t return {\n\t year: resYear,\n\t dayOfYear: resDayOfYear,\n\t };\n\t }\n\n\t function weekOfYear(mom, dow, doy) {\n\t var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n\t week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n\t resWeek,\n\t resYear;\n\n\t if (week < 1) {\n\t resYear = mom.year() - 1;\n\t resWeek = week + weeksInYear(resYear, dow, doy);\n\t } else if (week > weeksInYear(mom.year(), dow, doy)) {\n\t resWeek = week - weeksInYear(mom.year(), dow, doy);\n\t resYear = mom.year() + 1;\n\t } else {\n\t resYear = mom.year();\n\t resWeek = week;\n\t }\n\n\t return {\n\t week: resWeek,\n\t year: resYear,\n\t };\n\t }\n\n\t function weeksInYear(year, dow, doy) {\n\t var weekOffset = firstWeekOffset(year, dow, doy),\n\t weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n\t return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n\t }\n\n\t // FORMATTING\n\n\t addFormatToken('w', ['ww', 2], 'wo', 'week');\n\t addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n\t // PARSING\n\n\t addRegexToken('w', match1to2, match1to2NoLeadingZero);\n\t addRegexToken('ww', match1to2, match2);\n\t addRegexToken('W', match1to2, match1to2NoLeadingZero);\n\t addRegexToken('WW', match1to2, match2);\n\n\t addWeekParseToken(\n\t ['w', 'ww', 'W', 'WW'],\n\t function (input, week, config, token) {\n\t week[token.substr(0, 1)] = toInt(input);\n\t }\n\t );\n\n\t // HELPERS\n\n\t // LOCALES\n\n\t function localeWeek(mom) {\n\t return weekOfYear(mom, this._week.dow, this._week.doy).week;\n\t }\n\n\t var defaultLocaleWeek = {\n\t dow: 0, // Sunday is the first day of the week.\n\t doy: 6, // The week that contains Jan 6th is the first week of the year.\n\t };\n\n\t function localeFirstDayOfWeek() {\n\t return this._week.dow;\n\t }\n\n\t function localeFirstDayOfYear() {\n\t return this._week.doy;\n\t }\n\n\t // MOMENTS\n\n\t function getSetWeek(input) {\n\t var week = this.localeData().week(this);\n\t return input == null ? week : this.add((input - week) * 7, 'd');\n\t }\n\n\t function getSetISOWeek(input) {\n\t var week = weekOfYear(this, 1, 4).week;\n\t return input == null ? week : this.add((input - week) * 7, 'd');\n\t }\n\n\t // FORMATTING\n\n\t addFormatToken('d', 0, 'do', 'day');\n\n\t addFormatToken('dd', 0, 0, function (format) {\n\t return this.localeData().weekdaysMin(this, format);\n\t });\n\n\t addFormatToken('ddd', 0, 0, function (format) {\n\t return this.localeData().weekdaysShort(this, format);\n\t });\n\n\t addFormatToken('dddd', 0, 0, function (format) {\n\t return this.localeData().weekdays(this, format);\n\t });\n\n\t addFormatToken('e', 0, 0, 'weekday');\n\t addFormatToken('E', 0, 0, 'isoWeekday');\n\n\t // PARSING\n\n\t addRegexToken('d', match1to2);\n\t addRegexToken('e', match1to2);\n\t addRegexToken('E', match1to2);\n\t addRegexToken('dd', function (isStrict, locale) {\n\t return locale.weekdaysMinRegex(isStrict);\n\t });\n\t addRegexToken('ddd', function (isStrict, locale) {\n\t return locale.weekdaysShortRegex(isStrict);\n\t });\n\t addRegexToken('dddd', function (isStrict, locale) {\n\t return locale.weekdaysRegex(isStrict);\n\t });\n\n\t addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n\t var weekday = config._locale.weekdaysParse(input, token, config._strict);\n\t // if we didn't get a weekday name, mark the date as invalid\n\t if (weekday != null) {\n\t week.d = weekday;\n\t } else {\n\t getParsingFlags(config).invalidWeekday = input;\n\t }\n\t });\n\n\t addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n\t week[token] = toInt(input);\n\t });\n\n\t // HELPERS\n\n\t function parseWeekday(input, locale) {\n\t if (typeof input !== 'string') {\n\t return input;\n\t }\n\n\t if (!isNaN(input)) {\n\t return parseInt(input, 10);\n\t }\n\n\t input = locale.weekdaysParse(input);\n\t if (typeof input === 'number') {\n\t return input;\n\t }\n\n\t return null;\n\t }\n\n\t function parseIsoWeekday(input, locale) {\n\t if (typeof input === 'string') {\n\t return locale.weekdaysParse(input) % 7 || 7;\n\t }\n\t return isNaN(input) ? null : input;\n\t }\n\n\t // LOCALES\n\t function shiftWeekdays(ws, n) {\n\t return ws.slice(n, 7).concat(ws.slice(0, n));\n\t }\n\n\t var defaultLocaleWeekdays =\n\t 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n\t defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n\t defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n\t defaultWeekdaysRegex = matchWord,\n\t defaultWeekdaysShortRegex = matchWord,\n\t defaultWeekdaysMinRegex = matchWord;\n\n\t function localeWeekdays(m, format) {\n\t var weekdays = isArray(this._weekdays)\n\t ? this._weekdays\n\t : this._weekdays[\n\t m && m !== true && this._weekdays.isFormat.test(format)\n\t ? 'format'\n\t : 'standalone'\n\t ];\n\t return m === true\n\t ? shiftWeekdays(weekdays, this._week.dow)\n\t : m\n\t ? weekdays[m.day()]\n\t : weekdays;\n\t }\n\n\t function localeWeekdaysShort(m) {\n\t return m === true\n\t ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n\t : m\n\t ? this._weekdaysShort[m.day()]\n\t : this._weekdaysShort;\n\t }\n\n\t function localeWeekdaysMin(m) {\n\t return m === true\n\t ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n\t : m\n\t ? this._weekdaysMin[m.day()]\n\t : this._weekdaysMin;\n\t }\n\n\t function handleStrictParse$1(weekdayName, format, strict) {\n\t var i,\n\t ii,\n\t mom,\n\t llc = weekdayName.toLocaleLowerCase();\n\t if (!this._weekdaysParse) {\n\t this._weekdaysParse = [];\n\t this._shortWeekdaysParse = [];\n\t this._minWeekdaysParse = [];\n\n\t for (i = 0; i < 7; ++i) {\n\t mom = createUTC([2000, 1]).day(i);\n\t this._minWeekdaysParse[i] = this.weekdaysMin(\n\t mom,\n\t ''\n\t ).toLocaleLowerCase();\n\t this._shortWeekdaysParse[i] = this.weekdaysShort(\n\t mom,\n\t ''\n\t ).toLocaleLowerCase();\n\t this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n\t }\n\t }\n\n\t if (strict) {\n\t if (format === 'dddd') {\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else if (format === 'ddd') {\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t } else {\n\t if (format === 'dddd') {\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else if (format === 'ddd') {\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t } else {\n\t ii = indexOf.call(this._minWeekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._weekdaysParse, llc);\n\t if (ii !== -1) {\n\t return ii;\n\t }\n\t ii = indexOf.call(this._shortWeekdaysParse, llc);\n\t return ii !== -1 ? ii : null;\n\t }\n\t }\n\t }\n\n\t function localeWeekdaysParse(weekdayName, format, strict) {\n\t var i, mom, regex;\n\n\t if (this._weekdaysParseExact) {\n\t return handleStrictParse$1.call(this, weekdayName, format, strict);\n\t }\n\n\t if (!this._weekdaysParse) {\n\t this._weekdaysParse = [];\n\t this._minWeekdaysParse = [];\n\t this._shortWeekdaysParse = [];\n\t this._fullWeekdaysParse = [];\n\t }\n\n\t for (i = 0; i < 7; i++) {\n\t // make the regex if we don't have it already\n\n\t mom = createUTC([2000, 1]).day(i);\n\t if (strict && !this._fullWeekdaysParse[i]) {\n\t this._fullWeekdaysParse[i] = new RegExp(\n\t '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n\t 'i'\n\t );\n\t this._shortWeekdaysParse[i] = new RegExp(\n\t '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n\t 'i'\n\t );\n\t this._minWeekdaysParse[i] = new RegExp(\n\t '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n\t 'i'\n\t );\n\t }\n\t if (!this._weekdaysParse[i]) {\n\t regex =\n\t '^' +\n\t this.weekdays(mom, '') +\n\t '|^' +\n\t this.weekdaysShort(mom, '') +\n\t '|^' +\n\t this.weekdaysMin(mom, '');\n\t this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n\t }\n\t // test the regex\n\t if (\n\t strict &&\n\t format === 'dddd' &&\n\t this._fullWeekdaysParse[i].test(weekdayName)\n\t ) {\n\t return i;\n\t } else if (\n\t strict &&\n\t format === 'ddd' &&\n\t this._shortWeekdaysParse[i].test(weekdayName)\n\t ) {\n\t return i;\n\t } else if (\n\t strict &&\n\t format === 'dd' &&\n\t this._minWeekdaysParse[i].test(weekdayName)\n\t ) {\n\t return i;\n\t } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n\t return i;\n\t }\n\t }\n\t }\n\n\t // MOMENTS\n\n\t function getSetDayOfWeek(input) {\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\n\t var day = get(this, 'Day');\n\t if (input != null) {\n\t input = parseWeekday(input, this.localeData());\n\t return this.add(input - day, 'd');\n\t } else {\n\t return day;\n\t }\n\t }\n\n\t function getSetLocaleDayOfWeek(input) {\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\t var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n\t return input == null ? weekday : this.add(input - weekday, 'd');\n\t }\n\n\t function getSetISODayOfWeek(input) {\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\n\t // behaves the same as moment#day except\n\t // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n\t // as a setter, sunday should belong to the previous week.\n\n\t if (input != null) {\n\t var weekday = parseIsoWeekday(input, this.localeData());\n\t return this.day(this.day() % 7 ? weekday : weekday - 7);\n\t } else {\n\t return this.day() || 7;\n\t }\n\t }\n\n\t function weekdaysRegex(isStrict) {\n\t if (this._weekdaysParseExact) {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t computeWeekdaysParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._weekdaysStrictRegex;\n\t } else {\n\t return this._weekdaysRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t this._weekdaysRegex = defaultWeekdaysRegex;\n\t }\n\t return this._weekdaysStrictRegex && isStrict\n\t ? this._weekdaysStrictRegex\n\t : this._weekdaysRegex;\n\t }\n\t }\n\n\t function weekdaysShortRegex(isStrict) {\n\t if (this._weekdaysParseExact) {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t computeWeekdaysParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._weekdaysShortStrictRegex;\n\t } else {\n\t return this._weekdaysShortRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n\t this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n\t }\n\t return this._weekdaysShortStrictRegex && isStrict\n\t ? this._weekdaysShortStrictRegex\n\t : this._weekdaysShortRegex;\n\t }\n\t }\n\n\t function weekdaysMinRegex(isStrict) {\n\t if (this._weekdaysParseExact) {\n\t if (!hasOwnProp(this, '_weekdaysRegex')) {\n\t computeWeekdaysParse.call(this);\n\t }\n\t if (isStrict) {\n\t return this._weekdaysMinStrictRegex;\n\t } else {\n\t return this._weekdaysMinRegex;\n\t }\n\t } else {\n\t if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n\t this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n\t }\n\t return this._weekdaysMinStrictRegex && isStrict\n\t ? this._weekdaysMinStrictRegex\n\t : this._weekdaysMinRegex;\n\t }\n\t }\n\n\t function computeWeekdaysParse() {\n\t function cmpLenRev(a, b) {\n\t return b.length - a.length;\n\t }\n\n\t var minPieces = [],\n\t shortPieces = [],\n\t longPieces = [],\n\t mixedPieces = [],\n\t i,\n\t mom,\n\t minp,\n\t shortp,\n\t longp;\n\t for (i = 0; i < 7; i++) {\n\t // make the regex if we don't have it already\n\t mom = createUTC([2000, 1]).day(i);\n\t minp = regexEscape(this.weekdaysMin(mom, ''));\n\t shortp = regexEscape(this.weekdaysShort(mom, ''));\n\t longp = regexEscape(this.weekdays(mom, ''));\n\t minPieces.push(minp);\n\t shortPieces.push(shortp);\n\t longPieces.push(longp);\n\t mixedPieces.push(minp);\n\t mixedPieces.push(shortp);\n\t mixedPieces.push(longp);\n\t }\n\t // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n\t // will match the longer piece.\n\t minPieces.sort(cmpLenRev);\n\t shortPieces.sort(cmpLenRev);\n\t longPieces.sort(cmpLenRev);\n\t mixedPieces.sort(cmpLenRev);\n\n\t this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n\t this._weekdaysShortRegex = this._weekdaysRegex;\n\t this._weekdaysMinRegex = this._weekdaysRegex;\n\n\t this._weekdaysStrictRegex = new RegExp(\n\t '^(' + longPieces.join('|') + ')',\n\t 'i'\n\t );\n\t this._weekdaysShortStrictRegex = new RegExp(\n\t '^(' + shortPieces.join('|') + ')',\n\t 'i'\n\t );\n\t this._weekdaysMinStrictRegex = new RegExp(\n\t '^(' + minPieces.join('|') + ')',\n\t 'i'\n\t );\n\t }\n\n\t // FORMATTING\n\n\t function hFormat() {\n\t return this.hours() % 12 || 12;\n\t }\n\n\t function kFormat() {\n\t return this.hours() || 24;\n\t }\n\n\t addFormatToken('H', ['HH', 2], 0, 'hour');\n\t addFormatToken('h', ['hh', 2], 0, hFormat);\n\t addFormatToken('k', ['kk', 2], 0, kFormat);\n\n\t addFormatToken('hmm', 0, 0, function () {\n\t return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n\t });\n\n\t addFormatToken('hmmss', 0, 0, function () {\n\t return (\n\t '' +\n\t hFormat.apply(this) +\n\t zeroFill(this.minutes(), 2) +\n\t zeroFill(this.seconds(), 2)\n\t );\n\t });\n\n\t addFormatToken('Hmm', 0, 0, function () {\n\t return '' + this.hours() + zeroFill(this.minutes(), 2);\n\t });\n\n\t addFormatToken('Hmmss', 0, 0, function () {\n\t return (\n\t '' +\n\t this.hours() +\n\t zeroFill(this.minutes(), 2) +\n\t zeroFill(this.seconds(), 2)\n\t );\n\t });\n\n\t function meridiem(token, lowercase) {\n\t addFormatToken(token, 0, 0, function () {\n\t return this.localeData().meridiem(\n\t this.hours(),\n\t this.minutes(),\n\t lowercase\n\t );\n\t });\n\t }\n\n\t meridiem('a', true);\n\t meridiem('A', false);\n\n\t // PARSING\n\n\t function matchMeridiem(isStrict, locale) {\n\t return locale._meridiemParse;\n\t }\n\n\t addRegexToken('a', matchMeridiem);\n\t addRegexToken('A', matchMeridiem);\n\t addRegexToken('H', match1to2, match1to2HasZero);\n\t addRegexToken('h', match1to2, match1to2NoLeadingZero);\n\t addRegexToken('k', match1to2, match1to2NoLeadingZero);\n\t addRegexToken('HH', match1to2, match2);\n\t addRegexToken('hh', match1to2, match2);\n\t addRegexToken('kk', match1to2, match2);\n\n\t addRegexToken('hmm', match3to4);\n\t addRegexToken('hmmss', match5to6);\n\t addRegexToken('Hmm', match3to4);\n\t addRegexToken('Hmmss', match5to6);\n\n\t addParseToken(['H', 'HH'], HOUR);\n\t addParseToken(['k', 'kk'], function (input, array, config) {\n\t var kInput = toInt(input);\n\t array[HOUR] = kInput === 24 ? 0 : kInput;\n\t });\n\t addParseToken(['a', 'A'], function (input, array, config) {\n\t config._isPm = config._locale.isPM(input);\n\t config._meridiem = input;\n\t });\n\t addParseToken(['h', 'hh'], function (input, array, config) {\n\t array[HOUR] = toInt(input);\n\t getParsingFlags(config).bigHour = true;\n\t });\n\t addParseToken('hmm', function (input, array, config) {\n\t var pos = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos));\n\t array[MINUTE] = toInt(input.substr(pos));\n\t getParsingFlags(config).bigHour = true;\n\t });\n\t addParseToken('hmmss', function (input, array, config) {\n\t var pos1 = input.length - 4,\n\t pos2 = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos1));\n\t array[MINUTE] = toInt(input.substr(pos1, 2));\n\t array[SECOND] = toInt(input.substr(pos2));\n\t getParsingFlags(config).bigHour = true;\n\t });\n\t addParseToken('Hmm', function (input, array, config) {\n\t var pos = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos));\n\t array[MINUTE] = toInt(input.substr(pos));\n\t });\n\t addParseToken('Hmmss', function (input, array, config) {\n\t var pos1 = input.length - 4,\n\t pos2 = input.length - 2;\n\t array[HOUR] = toInt(input.substr(0, pos1));\n\t array[MINUTE] = toInt(input.substr(pos1, 2));\n\t array[SECOND] = toInt(input.substr(pos2));\n\t });\n\n\t // LOCALES\n\n\t function localeIsPM(input) {\n\t // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n\t // Using charAt should be more compatible.\n\t return (input + '').toLowerCase().charAt(0) === 'p';\n\t }\n\n\t var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n\t // Setting the hour should keep the time, because the user explicitly\n\t // specified which hour they want. So trying to maintain the same hour (in\n\t // a new timezone) makes sense. Adding/subtracting hours does not follow\n\t // this rule.\n\t getSetHour = makeGetSet('Hours', true);\n\n\t function localeMeridiem(hours, minutes, isLower) {\n\t if (hours > 11) {\n\t return isLower ? 'pm' : 'PM';\n\t } else {\n\t return isLower ? 'am' : 'AM';\n\t }\n\t }\n\n\t var baseConfig = {\n\t calendar: defaultCalendar,\n\t longDateFormat: defaultLongDateFormat,\n\t invalidDate: defaultInvalidDate,\n\t ordinal: defaultOrdinal,\n\t dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n\t relativeTime: defaultRelativeTime,\n\n\t months: defaultLocaleMonths,\n\t monthsShort: defaultLocaleMonthsShort,\n\n\t week: defaultLocaleWeek,\n\n\t weekdays: defaultLocaleWeekdays,\n\t weekdaysMin: defaultLocaleWeekdaysMin,\n\t weekdaysShort: defaultLocaleWeekdaysShort,\n\n\t meridiemParse: defaultLocaleMeridiemParse,\n\t };\n\n\t // internal storage for locale config files\n\t var locales = {},\n\t localeFamilies = {},\n\t globalLocale;\n\n\t function commonPrefix(arr1, arr2) {\n\t var i,\n\t minl = Math.min(arr1.length, arr2.length);\n\t for (i = 0; i < minl; i += 1) {\n\t if (arr1[i] !== arr2[i]) {\n\t return i;\n\t }\n\t }\n\t return minl;\n\t }\n\n\t function normalizeLocale(key) {\n\t return key ? key.toLowerCase().replace('_', '-') : key;\n\t }\n\n\t // pick the locale from the array\n\t // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n\t // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n\t function chooseLocale(names) {\n\t var i = 0,\n\t j,\n\t next,\n\t locale,\n\t split;\n\n\t while (i < names.length) {\n\t split = normalizeLocale(names[i]).split('-');\n\t j = split.length;\n\t next = normalizeLocale(names[i + 1]);\n\t next = next ? next.split('-') : null;\n\t while (j > 0) {\n\t locale = loadLocale(split.slice(0, j).join('-'));\n\t if (locale) {\n\t return locale;\n\t }\n\t if (\n\t next &&\n\t next.length >= j &&\n\t commonPrefix(split, next) >= j - 1\n\t ) {\n\t //the next array item is better than a shallower substring of this one\n\t break;\n\t }\n\t j--;\n\t }\n\t i++;\n\t }\n\t return globalLocale;\n\t }\n\n\t function isLocaleNameSane(name) {\n\t // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n\t // Ensure name is available and function returns boolean\n\t return !!(name && name.match('^[^/\\\\\\\\]*$'));\n\t }\n\n\t function loadLocale(name) {\n\t var oldLocale = null,\n\t aliasedRequire;\n\t // TODO: Find a better way to register and load all the locales in Node\n\t if (\n\t locales[name] === undefined &&\n\t 'object' !== 'undefined' &&\n\t module &&\n\t module.exports &&\n\t isLocaleNameSane(name)\n\t ) {\n\t try {\n\t oldLocale = globalLocale._abbr;\n\t aliasedRequire = commonjsRequire;\n\t aliasedRequire('./locale/' + name);\n\t getSetGlobalLocale(oldLocale);\n\t } catch (e) {\n\t // mark as not found to avoid repeating expensive file require call causing high CPU\n\t // when trying to find en-US, en_US, en-us for every format call\n\t locales[name] = null; // null means not found\n\t }\n\t }\n\t return locales[name];\n\t }\n\n\t // This function will load locale and then set the global locale. If\n\t // no arguments are passed in, it will simply return the current global\n\t // locale key.\n\t function getSetGlobalLocale(key, values) {\n\t var data;\n\t if (key) {\n\t if (isUndefined(values)) {\n\t data = getLocale(key);\n\t } else {\n\t data = defineLocale(key, values);\n\t }\n\n\t if (data) {\n\t // moment.duration._locale = moment._locale = data;\n\t globalLocale = data;\n\t } else {\n\t if (typeof console !== 'undefined' && console.warn) {\n\t //warn user if arguments are passed but the locale could not be set\n\t console.warn(\n\t 'Locale ' + key + ' not found. Did you forget to load it?'\n\t );\n\t }\n\t }\n\t }\n\n\t return globalLocale._abbr;\n\t }\n\n\t function defineLocale(name, config) {\n\t if (config !== null) {\n\t var locale,\n\t parentConfig = baseConfig;\n\t config.abbr = name;\n\t if (locales[name] != null) {\n\t deprecateSimple(\n\t 'defineLocaleOverride',\n\t 'use moment.updateLocale(localeName, config) to change ' +\n\t 'an existing locale. moment.defineLocale(localeName, ' +\n\t 'config) should only be used for creating a new locale ' +\n\t 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n\t );\n\t parentConfig = locales[name]._config;\n\t } else if (config.parentLocale != null) {\n\t if (locales[config.parentLocale] != null) {\n\t parentConfig = locales[config.parentLocale]._config;\n\t } else {\n\t locale = loadLocale(config.parentLocale);\n\t if (locale != null) {\n\t parentConfig = locale._config;\n\t } else {\n\t if (!localeFamilies[config.parentLocale]) {\n\t localeFamilies[config.parentLocale] = [];\n\t }\n\t localeFamilies[config.parentLocale].push({\n\t name: name,\n\t config: config,\n\t });\n\t return null;\n\t }\n\t }\n\t }\n\t locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n\t if (localeFamilies[name]) {\n\t localeFamilies[name].forEach(function (x) {\n\t defineLocale(x.name, x.config);\n\t });\n\t }\n\n\t // backwards compat for now: also set the locale\n\t // make sure we set the locale AFTER all child locales have been\n\t // created, so we won't end up with the child locale set.\n\t getSetGlobalLocale(name);\n\n\t return locales[name];\n\t } else {\n\t // useful for testing\n\t delete locales[name];\n\t return null;\n\t }\n\t }\n\n\t function updateLocale(name, config) {\n\t if (config != null) {\n\t var locale,\n\t tmpLocale,\n\t parentConfig = baseConfig;\n\n\t if (locales[name] != null && locales[name].parentLocale != null) {\n\t // Update existing child locale in-place to avoid memory-leaks\n\t locales[name].set(mergeConfigs(locales[name]._config, config));\n\t } else {\n\t // MERGE\n\t tmpLocale = loadLocale(name);\n\t if (tmpLocale != null) {\n\t parentConfig = tmpLocale._config;\n\t }\n\t config = mergeConfigs(parentConfig, config);\n\t if (tmpLocale == null) {\n\t // updateLocale is called for creating a new locale\n\t // Set abbr so it will have a name (getters return\n\t // undefined otherwise).\n\t config.abbr = name;\n\t }\n\t locale = new Locale(config);\n\t locale.parentLocale = locales[name];\n\t locales[name] = locale;\n\t }\n\n\t // backwards compat for now: also set the locale\n\t getSetGlobalLocale(name);\n\t } else {\n\t // pass null for config to unupdate, useful for tests\n\t if (locales[name] != null) {\n\t if (locales[name].parentLocale != null) {\n\t locales[name] = locales[name].parentLocale;\n\t if (name === getSetGlobalLocale()) {\n\t getSetGlobalLocale(name);\n\t }\n\t } else if (locales[name] != null) {\n\t delete locales[name];\n\t }\n\t }\n\t }\n\t return locales[name];\n\t }\n\n\t // returns locale data\n\t function getLocale(key) {\n\t var locale;\n\n\t if (key && key._locale && key._locale._abbr) {\n\t key = key._locale._abbr;\n\t }\n\n\t if (!key) {\n\t return globalLocale;\n\t }\n\n\t if (!isArray(key)) {\n\t //short-circuit everything else\n\t locale = loadLocale(key);\n\t if (locale) {\n\t return locale;\n\t }\n\t key = [key];\n\t }\n\n\t return chooseLocale(key);\n\t }\n\n\t function listLocales() {\n\t return keys(locales);\n\t }\n\n\t function checkOverflow(m) {\n\t var overflow,\n\t a = m._a;\n\n\t if (a && getParsingFlags(m).overflow === -2) {\n\t overflow =\n\t a[MONTH] < 0 || a[MONTH] > 11\n\t ? MONTH\n\t : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n\t ? DATE\n\t : a[HOUR] < 0 ||\n\t a[HOUR] > 24 ||\n\t (a[HOUR] === 24 &&\n\t (a[MINUTE] !== 0 ||\n\t a[SECOND] !== 0 ||\n\t a[MILLISECOND] !== 0))\n\t ? HOUR\n\t : a[MINUTE] < 0 || a[MINUTE] > 59\n\t ? MINUTE\n\t : a[SECOND] < 0 || a[SECOND] > 59\n\t ? SECOND\n\t : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n\t ? MILLISECOND\n\t : -1;\n\n\t if (\n\t getParsingFlags(m)._overflowDayOfYear &&\n\t (overflow < YEAR || overflow > DATE)\n\t ) {\n\t overflow = DATE;\n\t }\n\t if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n\t overflow = WEEK;\n\t }\n\t if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n\t overflow = WEEKDAY;\n\t }\n\n\t getParsingFlags(m).overflow = overflow;\n\t }\n\n\t return m;\n\t }\n\n\t // iso 8601 regex\n\t // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n\t var extendedIsoRegex =\n\t /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n\t basicIsoRegex =\n\t /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n\t tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n\t isoDates = [\n\t ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n\t ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n\t ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n\t ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n\t ['YYYY-DDD', /\\d{4}-\\d{3}/],\n\t ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n\t ['YYYYYYMMDD', /[+-]\\d{10}/],\n\t ['YYYYMMDD', /\\d{8}/],\n\t ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n\t ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n\t ['YYYYDDD', /\\d{7}/],\n\t ['YYYYMM', /\\d{6}/, false],\n\t ['YYYY', /\\d{4}/, false],\n\t ],\n\t // iso time formats and regexes\n\t isoTimes = [\n\t ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n\t ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n\t ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n\t ['HH:mm', /\\d\\d:\\d\\d/],\n\t ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n\t ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n\t ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n\t ['HHmm', /\\d\\d\\d\\d/],\n\t ['HH', /\\d\\d/],\n\t ],\n\t aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n\t // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n\t rfc2822 =\n\t /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n\t obsOffsets = {\n\t UT: 0,\n\t GMT: 0,\n\t EDT: -4 * 60,\n\t EST: -5 * 60,\n\t CDT: -5 * 60,\n\t CST: -6 * 60,\n\t MDT: -6 * 60,\n\t MST: -7 * 60,\n\t PDT: -7 * 60,\n\t PST: -8 * 60,\n\t };\n\n\t // date from iso format\n\t function configFromISO(config) {\n\t var i,\n\t l,\n\t string = config._i,\n\t match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n\t allowTime,\n\t dateFormat,\n\t timeFormat,\n\t tzFormat,\n\t isoDatesLen = isoDates.length,\n\t isoTimesLen = isoTimes.length;\n\n\t if (match) {\n\t getParsingFlags(config).iso = true;\n\t for (i = 0, l = isoDatesLen; i < l; i++) {\n\t if (isoDates[i][1].exec(match[1])) {\n\t dateFormat = isoDates[i][0];\n\t allowTime = isoDates[i][2] !== false;\n\t break;\n\t }\n\t }\n\t if (dateFormat == null) {\n\t config._isValid = false;\n\t return;\n\t }\n\t if (match[3]) {\n\t for (i = 0, l = isoTimesLen; i < l; i++) {\n\t if (isoTimes[i][1].exec(match[3])) {\n\t // match[2] should be 'T' or space\n\t timeFormat = (match[2] || ' ') + isoTimes[i][0];\n\t break;\n\t }\n\t }\n\t if (timeFormat == null) {\n\t config._isValid = false;\n\t return;\n\t }\n\t }\n\t if (!allowTime && timeFormat != null) {\n\t config._isValid = false;\n\t return;\n\t }\n\t if (match[4]) {\n\t if (tzRegex.exec(match[4])) {\n\t tzFormat = 'Z';\n\t } else {\n\t config._isValid = false;\n\t return;\n\t }\n\t }\n\t config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n\t configFromStringAndFormat(config);\n\t } else {\n\t config._isValid = false;\n\t }\n\t }\n\n\t function extractFromRFC2822Strings(\n\t yearStr,\n\t monthStr,\n\t dayStr,\n\t hourStr,\n\t minuteStr,\n\t secondStr\n\t ) {\n\t var result = [\n\t untruncateYear(yearStr),\n\t defaultLocaleMonthsShort.indexOf(monthStr),\n\t parseInt(dayStr, 10),\n\t parseInt(hourStr, 10),\n\t parseInt(minuteStr, 10),\n\t ];\n\n\t if (secondStr) {\n\t result.push(parseInt(secondStr, 10));\n\t }\n\n\t return result;\n\t }\n\n\t function untruncateYear(yearStr) {\n\t var year = parseInt(yearStr, 10);\n\t if (year <= 49) {\n\t return 2000 + year;\n\t } else if (year <= 999) {\n\t return 1900 + year;\n\t }\n\t return year;\n\t }\n\n\t function preprocessRFC2822(s) {\n\t // Remove comments and folding whitespace and replace multiple-spaces with a single space\n\t return s\n\t .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n\t .replace(/(\\s\\s+)/g, ' ')\n\t .replace(/^\\s\\s*/, '')\n\t .replace(/\\s\\s*$/, '');\n\t }\n\n\t function checkWeekday(weekdayStr, parsedInput, config) {\n\t if (weekdayStr) {\n\t // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n\t var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n\t weekdayActual = new Date(\n\t parsedInput[0],\n\t parsedInput[1],\n\t parsedInput[2]\n\t ).getDay();\n\t if (weekdayProvided !== weekdayActual) {\n\t getParsingFlags(config).weekdayMismatch = true;\n\t config._isValid = false;\n\t return false;\n\t }\n\t }\n\t return true;\n\t }\n\n\t function calculateOffset(obsOffset, militaryOffset, numOffset) {\n\t if (obsOffset) {\n\t return obsOffsets[obsOffset];\n\t } else if (militaryOffset) {\n\t // the only allowed military tz is Z\n\t return 0;\n\t } else {\n\t var hm = parseInt(numOffset, 10),\n\t m = hm % 100,\n\t h = (hm - m) / 100;\n\t return h * 60 + m;\n\t }\n\t }\n\n\t // date and time from ref 2822 format\n\t function configFromRFC2822(config) {\n\t var match = rfc2822.exec(preprocessRFC2822(config._i)),\n\t parsedArray;\n\t if (match) {\n\t parsedArray = extractFromRFC2822Strings(\n\t match[4],\n\t match[3],\n\t match[2],\n\t match[5],\n\t match[6],\n\t match[7]\n\t );\n\t if (!checkWeekday(match[1], parsedArray, config)) {\n\t return;\n\t }\n\n\t config._a = parsedArray;\n\t config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n\t config._d = createUTCDate.apply(null, config._a);\n\t config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n\t getParsingFlags(config).rfc2822 = true;\n\t } else {\n\t config._isValid = false;\n\t }\n\t }\n\n\t // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n\t function configFromString(config) {\n\t var matched = aspNetJsonRegex.exec(config._i);\n\t if (matched !== null) {\n\t config._d = new Date(+matched[1]);\n\t return;\n\t }\n\n\t configFromISO(config);\n\t if (config._isValid === false) {\n\t delete config._isValid;\n\t } else {\n\t return;\n\t }\n\n\t configFromRFC2822(config);\n\t if (config._isValid === false) {\n\t delete config._isValid;\n\t } else {\n\t return;\n\t }\n\n\t if (config._strict) {\n\t config._isValid = false;\n\t } else {\n\t // Final attempt, use Input Fallback\n\t hooks.createFromInputFallback(config);\n\t }\n\t }\n\n\t hooks.createFromInputFallback = deprecate(\n\t 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n\t 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n\t 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n\t function (config) {\n\t config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n\t }\n\t );\n\n\t // Pick the first defined of two or three arguments.\n\t function defaults(a, b, c) {\n\t if (a != null) {\n\t return a;\n\t }\n\t if (b != null) {\n\t return b;\n\t }\n\t return c;\n\t }\n\n\t function currentDateArray(config) {\n\t // hooks is actually the exported moment object\n\t var nowValue = new Date(hooks.now());\n\t if (config._useUTC) {\n\t return [\n\t nowValue.getUTCFullYear(),\n\t nowValue.getUTCMonth(),\n\t nowValue.getUTCDate(),\n\t ];\n\t }\n\t return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n\t }\n\n\t // convert an array to a date.\n\t // the array should mirror the parameters below\n\t // note: all values past the year are optional and will default to the lowest possible value.\n\t // [year, month, day , hour, minute, second, millisecond]\n\t function configFromArray(config) {\n\t var i,\n\t date,\n\t input = [],\n\t currentDate,\n\t expectedWeekday,\n\t yearToUse;\n\n\t if (config._d) {\n\t return;\n\t }\n\n\t currentDate = currentDateArray(config);\n\n\t //compute day of the year from weeks and weekdays\n\t if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n\t dayOfYearFromWeekInfo(config);\n\t }\n\n\t //if the day of the year is set, figure out what it is\n\t if (config._dayOfYear != null) {\n\t yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n\t if (\n\t config._dayOfYear > daysInYear(yearToUse) ||\n\t config._dayOfYear === 0\n\t ) {\n\t getParsingFlags(config)._overflowDayOfYear = true;\n\t }\n\n\t date = createUTCDate(yearToUse, 0, config._dayOfYear);\n\t config._a[MONTH] = date.getUTCMonth();\n\t config._a[DATE] = date.getUTCDate();\n\t }\n\n\t // Default to current date.\n\t // * if no year, month, day of month are given, default to today\n\t // * if day of month is given, default month and year\n\t // * if month is given, default only year\n\t // * if year is given, don't default anything\n\t for (i = 0; i < 3 && config._a[i] == null; ++i) {\n\t config._a[i] = input[i] = currentDate[i];\n\t }\n\n\t // Zero out whatever was not defaulted, including time\n\t for (; i < 7; i++) {\n\t config._a[i] = input[i] =\n\t config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n\t }\n\n\t // Check for 24:00:00.000\n\t if (\n\t config._a[HOUR] === 24 &&\n\t config._a[MINUTE] === 0 &&\n\t config._a[SECOND] === 0 &&\n\t config._a[MILLISECOND] === 0\n\t ) {\n\t config._nextDay = true;\n\t config._a[HOUR] = 0;\n\t }\n\n\t config._d = (config._useUTC ? createUTCDate : createDate).apply(\n\t null,\n\t input\n\t );\n\t expectedWeekday = config._useUTC\n\t ? config._d.getUTCDay()\n\t : config._d.getDay();\n\n\t // Apply timezone offset from input. The actual utcOffset can be changed\n\t // with parseZone.\n\t if (config._tzm != null) {\n\t config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\t }\n\n\t if (config._nextDay) {\n\t config._a[HOUR] = 24;\n\t }\n\n\t // check for mismatching day of week\n\t if (\n\t config._w &&\n\t typeof config._w.d !== 'undefined' &&\n\t config._w.d !== expectedWeekday\n\t ) {\n\t getParsingFlags(config).weekdayMismatch = true;\n\t }\n\t }\n\n\t function dayOfYearFromWeekInfo(config) {\n\t var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n\t w = config._w;\n\t if (w.GG != null || w.W != null || w.E != null) {\n\t dow = 1;\n\t doy = 4;\n\n\t // TODO: We need to take the current isoWeekYear, but that depends on\n\t // how we interpret now (local, utc, fixed offset). So create\n\t // a now version of current config (take local/utc/offset flags, and\n\t // create now).\n\t weekYear = defaults(\n\t w.GG,\n\t config._a[YEAR],\n\t weekOfYear(createLocal(), 1, 4).year\n\t );\n\t week = defaults(w.W, 1);\n\t weekday = defaults(w.E, 1);\n\t if (weekday < 1 || weekday > 7) {\n\t weekdayOverflow = true;\n\t }\n\t } else {\n\t dow = config._locale._week.dow;\n\t doy = config._locale._week.doy;\n\n\t curWeek = weekOfYear(createLocal(), dow, doy);\n\n\t weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n\t // Default to current week.\n\t week = defaults(w.w, curWeek.week);\n\n\t if (w.d != null) {\n\t // weekday -- low day numbers are considered next week\n\t weekday = w.d;\n\t if (weekday < 0 || weekday > 6) {\n\t weekdayOverflow = true;\n\t }\n\t } else if (w.e != null) {\n\t // local weekday -- counting starts from beginning of week\n\t weekday = w.e + dow;\n\t if (w.e < 0 || w.e > 6) {\n\t weekdayOverflow = true;\n\t }\n\t } else {\n\t // default to beginning of week\n\t weekday = dow;\n\t }\n\t }\n\t if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n\t getParsingFlags(config)._overflowWeeks = true;\n\t } else if (weekdayOverflow != null) {\n\t getParsingFlags(config)._overflowWeekday = true;\n\t } else {\n\t temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n\t config._a[YEAR] = temp.year;\n\t config._dayOfYear = temp.dayOfYear;\n\t }\n\t }\n\n\t // constant that refers to the ISO standard\n\t hooks.ISO_8601 = function () {};\n\n\t // constant that refers to the RFC 2822 form\n\t hooks.RFC_2822 = function () {};\n\n\t // date from string and format string\n\t function configFromStringAndFormat(config) {\n\t // TODO: Move this to another part of the creation flow to prevent circular deps\n\t if (config._f === hooks.ISO_8601) {\n\t configFromISO(config);\n\t return;\n\t }\n\t if (config._f === hooks.RFC_2822) {\n\t configFromRFC2822(config);\n\t return;\n\t }\n\t config._a = [];\n\t getParsingFlags(config).empty = true;\n\n\t // This array is used to make a Date, either with `new Date` or `Date.UTC`\n\t var string = '' + config._i,\n\t i,\n\t parsedInput,\n\t tokens,\n\t token,\n\t skipped,\n\t stringLength = string.length,\n\t totalParsedInputLength = 0,\n\t era,\n\t tokenLen;\n\n\t tokens =\n\t expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\t tokenLen = tokens.length;\n\t for (i = 0; i < tokenLen; i++) {\n\t token = tokens[i];\n\t parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n\t [])[0];\n\t if (parsedInput) {\n\t skipped = string.substr(0, string.indexOf(parsedInput));\n\t if (skipped.length > 0) {\n\t getParsingFlags(config).unusedInput.push(skipped);\n\t }\n\t string = string.slice(\n\t string.indexOf(parsedInput) + parsedInput.length\n\t );\n\t totalParsedInputLength += parsedInput.length;\n\t }\n\t // don't parse if it's not a known token\n\t if (formatTokenFunctions[token]) {\n\t if (parsedInput) {\n\t getParsingFlags(config).empty = false;\n\t } else {\n\t getParsingFlags(config).unusedTokens.push(token);\n\t }\n\t addTimeToArrayFromToken(token, parsedInput, config);\n\t } else if (config._strict && !parsedInput) {\n\t getParsingFlags(config).unusedTokens.push(token);\n\t }\n\t }\n\n\t // add remaining unparsed input length to the string\n\t getParsingFlags(config).charsLeftOver =\n\t stringLength - totalParsedInputLength;\n\t if (string.length > 0) {\n\t getParsingFlags(config).unusedInput.push(string);\n\t }\n\n\t // clear _12h flag if hour is <= 12\n\t if (\n\t config._a[HOUR] <= 12 &&\n\t getParsingFlags(config).bigHour === true &&\n\t config._a[HOUR] > 0\n\t ) {\n\t getParsingFlags(config).bigHour = undefined;\n\t }\n\n\t getParsingFlags(config).parsedDateParts = config._a.slice(0);\n\t getParsingFlags(config).meridiem = config._meridiem;\n\t // handle meridiem\n\t config._a[HOUR] = meridiemFixWrap(\n\t config._locale,\n\t config._a[HOUR],\n\t config._meridiem\n\t );\n\n\t // handle era\n\t era = getParsingFlags(config).era;\n\t if (era !== null) {\n\t config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n\t }\n\n\t configFromArray(config);\n\t checkOverflow(config);\n\t }\n\n\t function meridiemFixWrap(locale, hour, meridiem) {\n\t var isPm;\n\n\t if (meridiem == null) {\n\t // nothing to do\n\t return hour;\n\t }\n\t if (locale.meridiemHour != null) {\n\t return locale.meridiemHour(hour, meridiem);\n\t } else if (locale.isPM != null) {\n\t // Fallback\n\t isPm = locale.isPM(meridiem);\n\t if (isPm && hour < 12) {\n\t hour += 12;\n\t }\n\t if (!isPm && hour === 12) {\n\t hour = 0;\n\t }\n\t return hour;\n\t } else {\n\t // this is not supposed to happen\n\t return hour;\n\t }\n\t }\n\n\t // date from string and array of format strings\n\t function configFromStringAndArray(config) {\n\t var tempConfig,\n\t bestMoment,\n\t scoreToBeat,\n\t i,\n\t currentScore,\n\t validFormatFound,\n\t bestFormatIsValid = false,\n\t configfLen = config._f.length;\n\n\t if (configfLen === 0) {\n\t getParsingFlags(config).invalidFormat = true;\n\t config._d = new Date(NaN);\n\t return;\n\t }\n\n\t for (i = 0; i < configfLen; i++) {\n\t currentScore = 0;\n\t validFormatFound = false;\n\t tempConfig = copyConfig({}, config);\n\t if (config._useUTC != null) {\n\t tempConfig._useUTC = config._useUTC;\n\t }\n\t tempConfig._f = config._f[i];\n\t configFromStringAndFormat(tempConfig);\n\n\t if (isValid(tempConfig)) {\n\t validFormatFound = true;\n\t }\n\n\t // if there is any input that was not parsed add a penalty for that format\n\t currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n\t //or tokens\n\t currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n\t getParsingFlags(tempConfig).score = currentScore;\n\n\t if (!bestFormatIsValid) {\n\t if (\n\t scoreToBeat == null ||\n\t currentScore < scoreToBeat ||\n\t validFormatFound\n\t ) {\n\t scoreToBeat = currentScore;\n\t bestMoment = tempConfig;\n\t if (validFormatFound) {\n\t bestFormatIsValid = true;\n\t }\n\t }\n\t } else {\n\t if (currentScore < scoreToBeat) {\n\t scoreToBeat = currentScore;\n\t bestMoment = tempConfig;\n\t }\n\t }\n\t }\n\n\t extend(config, bestMoment || tempConfig);\n\t }\n\n\t function configFromObject(config) {\n\t if (config._d) {\n\t return;\n\t }\n\n\t var i = normalizeObjectUnits(config._i),\n\t dayOrDate = i.day === undefined ? i.date : i.day;\n\t config._a = map(\n\t [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n\t function (obj) {\n\t return obj && parseInt(obj, 10);\n\t }\n\t );\n\n\t configFromArray(config);\n\t }\n\n\t function createFromConfig(config) {\n\t var res = new Moment(checkOverflow(prepareConfig(config)));\n\t if (res._nextDay) {\n\t // Adding is smart enough around DST\n\t res.add(1, 'd');\n\t res._nextDay = undefined;\n\t }\n\n\t return res;\n\t }\n\n\t function prepareConfig(config) {\n\t var input = config._i,\n\t format = config._f;\n\n\t config._locale = config._locale || getLocale(config._l);\n\n\t if (input === null || (format === undefined && input === '')) {\n\t return createInvalid({ nullInput: true });\n\t }\n\n\t if (typeof input === 'string') {\n\t config._i = input = config._locale.preparse(input);\n\t }\n\n\t if (isMoment(input)) {\n\t return new Moment(checkOverflow(input));\n\t } else if (isDate(input)) {\n\t config._d = input;\n\t } else if (isArray(format)) {\n\t configFromStringAndArray(config);\n\t } else if (format) {\n\t configFromStringAndFormat(config);\n\t } else {\n\t configFromInput(config);\n\t }\n\n\t if (!isValid(config)) {\n\t config._d = null;\n\t }\n\n\t return config;\n\t }\n\n\t function configFromInput(config) {\n\t var input = config._i;\n\t if (isUndefined(input)) {\n\t config._d = new Date(hooks.now());\n\t } else if (isDate(input)) {\n\t config._d = new Date(input.valueOf());\n\t } else if (typeof input === 'string') {\n\t configFromString(config);\n\t } else if (isArray(input)) {\n\t config._a = map(input.slice(0), function (obj) {\n\t return parseInt(obj, 10);\n\t });\n\t configFromArray(config);\n\t } else if (isObject(input)) {\n\t configFromObject(config);\n\t } else if (isNumber(input)) {\n\t // from milliseconds\n\t config._d = new Date(input);\n\t } else {\n\t hooks.createFromInputFallback(config);\n\t }\n\t }\n\n\t function createLocalOrUTC(input, format, locale, strict, isUTC) {\n\t var c = {};\n\n\t if (format === true || format === false) {\n\t strict = format;\n\t format = undefined;\n\t }\n\n\t if (locale === true || locale === false) {\n\t strict = locale;\n\t locale = undefined;\n\t }\n\n\t if (\n\t (isObject(input) && isObjectEmpty(input)) ||\n\t (isArray(input) && input.length === 0)\n\t ) {\n\t input = undefined;\n\t }\n\t // object construction must be done this way.\n\t // https://github.com/moment/moment/issues/1423\n\t c._isAMomentObject = true;\n\t c._useUTC = c._isUTC = isUTC;\n\t c._l = locale;\n\t c._i = input;\n\t c._f = format;\n\t c._strict = strict;\n\n\t return createFromConfig(c);\n\t }\n\n\t function createLocal(input, format, locale, strict) {\n\t return createLocalOrUTC(input, format, locale, strict, false);\n\t }\n\n\t var prototypeMin = deprecate(\n\t 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n\t function () {\n\t var other = createLocal.apply(null, arguments);\n\t if (this.isValid() && other.isValid()) {\n\t return other < this ? this : other;\n\t } else {\n\t return createInvalid();\n\t }\n\t }\n\t ),\n\t prototypeMax = deprecate(\n\t 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n\t function () {\n\t var other = createLocal.apply(null, arguments);\n\t if (this.isValid() && other.isValid()) {\n\t return other > this ? this : other;\n\t } else {\n\t return createInvalid();\n\t }\n\t }\n\t );\n\n\t // Pick a moment m from moments so that m[fn](other) is true for all\n\t // other. This relies on the function fn to be transitive.\n\t //\n\t // moments should either be an array of moment objects or an array, whose\n\t // first element is an array of moment objects.\n\t function pickBy(fn, moments) {\n\t var res, i;\n\t if (moments.length === 1 && isArray(moments[0])) {\n\t moments = moments[0];\n\t }\n\t if (!moments.length) {\n\t return createLocal();\n\t }\n\t res = moments[0];\n\t for (i = 1; i < moments.length; ++i) {\n\t if (!moments[i].isValid() || moments[i][fn](res)) {\n\t res = moments[i];\n\t }\n\t }\n\t return res;\n\t }\n\n\t // TODO: Use [].sort instead?\n\t function min() {\n\t var args = [].slice.call(arguments, 0);\n\n\t return pickBy('isBefore', args);\n\t }\n\n\t function max() {\n\t var args = [].slice.call(arguments, 0);\n\n\t return pickBy('isAfter', args);\n\t }\n\n\t var now = function () {\n\t return Date.now ? Date.now() : +new Date();\n\t };\n\n\t var ordering = [\n\t 'year',\n\t 'quarter',\n\t 'month',\n\t 'week',\n\t 'day',\n\t 'hour',\n\t 'minute',\n\t 'second',\n\t 'millisecond',\n\t ];\n\n\t function isDurationValid(m) {\n\t var key,\n\t unitHasDecimal = false,\n\t i,\n\t orderLen = ordering.length;\n\t for (key in m) {\n\t if (\n\t hasOwnProp(m, key) &&\n\t !(\n\t indexOf.call(ordering, key) !== -1 &&\n\t (m[key] == null || !isNaN(m[key]))\n\t )\n\t ) {\n\t return false;\n\t }\n\t }\n\n\t for (i = 0; i < orderLen; ++i) {\n\t if (m[ordering[i]]) {\n\t if (unitHasDecimal) {\n\t return false; // only allow non-integers for smallest unit\n\t }\n\t if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n\t unitHasDecimal = true;\n\t }\n\t }\n\t }\n\n\t return true;\n\t }\n\n\t function isValid$1() {\n\t return this._isValid;\n\t }\n\n\t function createInvalid$1() {\n\t return createDuration(NaN);\n\t }\n\n\t function Duration(duration) {\n\t var normalizedInput = normalizeObjectUnits(duration),\n\t years = normalizedInput.year || 0,\n\t quarters = normalizedInput.quarter || 0,\n\t months = normalizedInput.month || 0,\n\t weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n\t days = normalizedInput.day || 0,\n\t hours = normalizedInput.hour || 0,\n\t minutes = normalizedInput.minute || 0,\n\t seconds = normalizedInput.second || 0,\n\t milliseconds = normalizedInput.millisecond || 0;\n\n\t this._isValid = isDurationValid(normalizedInput);\n\n\t // representation for dateAddRemove\n\t this._milliseconds =\n\t +milliseconds +\n\t seconds * 1e3 + // 1000\n\t minutes * 6e4 + // 1000 * 60\n\t hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n\t // Because of dateAddRemove treats 24 hours as different from a\n\t // day when working around DST, we need to store them separately\n\t this._days = +days + weeks * 7;\n\t // It is impossible to translate months into days without knowing\n\t // which months you are are talking about, so we have to store\n\t // it separately.\n\t this._months = +months + quarters * 3 + years * 12;\n\n\t this._data = {};\n\n\t this._locale = getLocale();\n\n\t this._bubble();\n\t }\n\n\t function isDuration(obj) {\n\t return obj instanceof Duration;\n\t }\n\n\t function absRound(number) {\n\t if (number < 0) {\n\t return Math.round(-1 * number) * -1;\n\t } else {\n\t return Math.round(number);\n\t }\n\t }\n\n\t // compare two arrays, return the number of differences\n\t function compareArrays(array1, array2, dontConvert) {\n\t var len = Math.min(array1.length, array2.length),\n\t lengthDiff = Math.abs(array1.length - array2.length),\n\t diffs = 0,\n\t i;\n\t for (i = 0; i < len; i++) {\n\t if (\n\t (toInt(array1[i]) !== toInt(array2[i]))\n\t ) {\n\t diffs++;\n\t }\n\t }\n\t return diffs + lengthDiff;\n\t }\n\n\t // FORMATTING\n\n\t function offset(token, separator) {\n\t addFormatToken(token, 0, 0, function () {\n\t var offset = this.utcOffset(),\n\t sign = '+';\n\t if (offset < 0) {\n\t offset = -offset;\n\t sign = '-';\n\t }\n\t return (\n\t sign +\n\t zeroFill(~~(offset / 60), 2) +\n\t separator +\n\t zeroFill(~~offset % 60, 2)\n\t );\n\t });\n\t }\n\n\t offset('Z', ':');\n\t offset('ZZ', '');\n\n\t // PARSING\n\n\t addRegexToken('Z', matchShortOffset);\n\t addRegexToken('ZZ', matchShortOffset);\n\t addParseToken(['Z', 'ZZ'], function (input, array, config) {\n\t config._useUTC = true;\n\t config._tzm = offsetFromString(matchShortOffset, input);\n\t });\n\n\t // HELPERS\n\n\t // timezone chunker\n\t // '+10:00' > ['10', '00']\n\t // '-1530' > ['-15', '30']\n\t var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n\t function offsetFromString(matcher, string) {\n\t var matches = (string || '').match(matcher),\n\t chunk,\n\t parts,\n\t minutes;\n\n\t if (matches === null) {\n\t return null;\n\t }\n\n\t chunk = matches[matches.length - 1] || [];\n\t parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n\t minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n\t return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n\t }\n\n\t // Return a moment from input, that is local/utc/zone equivalent to model.\n\t function cloneWithOffset(input, model) {\n\t var res, diff;\n\t if (model._isUTC) {\n\t res = model.clone();\n\t diff =\n\t (isMoment(input) || isDate(input)\n\t ? input.valueOf()\n\t : createLocal(input).valueOf()) - res.valueOf();\n\t // Use low-level api, because this fn is low-level api.\n\t res._d.setTime(res._d.valueOf() + diff);\n\t hooks.updateOffset(res, false);\n\t return res;\n\t } else {\n\t return createLocal(input).local();\n\t }\n\t }\n\n\t function getDateOffset(m) {\n\t // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n\t // https://github.com/moment/moment/pull/1871\n\t return -Math.round(m._d.getTimezoneOffset());\n\t }\n\n\t // HOOKS\n\n\t // This function will be called whenever a moment is mutated.\n\t // It is intended to keep the offset in sync with the timezone.\n\t hooks.updateOffset = function () {};\n\n\t // MOMENTS\n\n\t // keepLocalTime = true means only change the timezone, without\n\t // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n\t // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n\t // +0200, so we adjust the time as needed, to be valid.\n\t //\n\t // Keeping the time actually adds/subtracts (one hour)\n\t // from the actual represented time. That is why we call updateOffset\n\t // a second time. In case it wants us to change the offset again\n\t // _changeInProgress == true case, then we have to adjust, because\n\t // there is no such time in the given timezone.\n\t function getSetOffset(input, keepLocalTime, keepMinutes) {\n\t var offset = this._offset || 0,\n\t localAdjust;\n\t if (!this.isValid()) {\n\t return input != null ? this : NaN;\n\t }\n\t if (input != null) {\n\t if (typeof input === 'string') {\n\t input = offsetFromString(matchShortOffset, input);\n\t if (input === null) {\n\t return this;\n\t }\n\t } else if (Math.abs(input) < 16 && !keepMinutes) {\n\t input = input * 60;\n\t }\n\t if (!this._isUTC && keepLocalTime) {\n\t localAdjust = getDateOffset(this);\n\t }\n\t this._offset = input;\n\t this._isUTC = true;\n\t if (localAdjust != null) {\n\t this.add(localAdjust, 'm');\n\t }\n\t if (offset !== input) {\n\t if (!keepLocalTime || this._changeInProgress) {\n\t addSubtract(\n\t this,\n\t createDuration(input - offset, 'm'),\n\t 1,\n\t false\n\t );\n\t } else if (!this._changeInProgress) {\n\t this._changeInProgress = true;\n\t hooks.updateOffset(this, true);\n\t this._changeInProgress = null;\n\t }\n\t }\n\t return this;\n\t } else {\n\t return this._isUTC ? offset : getDateOffset(this);\n\t }\n\t }\n\n\t function getSetZone(input, keepLocalTime) {\n\t if (input != null) {\n\t if (typeof input !== 'string') {\n\t input = -input;\n\t }\n\n\t this.utcOffset(input, keepLocalTime);\n\n\t return this;\n\t } else {\n\t return -this.utcOffset();\n\t }\n\t }\n\n\t function setOffsetToUTC(keepLocalTime) {\n\t return this.utcOffset(0, keepLocalTime);\n\t }\n\n\t function setOffsetToLocal(keepLocalTime) {\n\t if (this._isUTC) {\n\t this.utcOffset(0, keepLocalTime);\n\t this._isUTC = false;\n\n\t if (keepLocalTime) {\n\t this.subtract(getDateOffset(this), 'm');\n\t }\n\t }\n\t return this;\n\t }\n\n\t function setOffsetToParsedOffset() {\n\t if (this._tzm != null) {\n\t this.utcOffset(this._tzm, false, true);\n\t } else if (typeof this._i === 'string') {\n\t var tZone = offsetFromString(matchOffset, this._i);\n\t if (tZone != null) {\n\t this.utcOffset(tZone);\n\t } else {\n\t this.utcOffset(0, true);\n\t }\n\t }\n\t return this;\n\t }\n\n\t function hasAlignedHourOffset(input) {\n\t if (!this.isValid()) {\n\t return false;\n\t }\n\t input = input ? createLocal(input).utcOffset() : 0;\n\n\t return (this.utcOffset() - input) % 60 === 0;\n\t }\n\n\t function isDaylightSavingTime() {\n\t return (\n\t this.utcOffset() > this.clone().month(0).utcOffset() ||\n\t this.utcOffset() > this.clone().month(5).utcOffset()\n\t );\n\t }\n\n\t function isDaylightSavingTimeShifted() {\n\t if (!isUndefined(this._isDSTShifted)) {\n\t return this._isDSTShifted;\n\t }\n\n\t var c = {},\n\t other;\n\n\t copyConfig(c, this);\n\t c = prepareConfig(c);\n\n\t if (c._a) {\n\t other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n\t this._isDSTShifted =\n\t this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n\t } else {\n\t this._isDSTShifted = false;\n\t }\n\n\t return this._isDSTShifted;\n\t }\n\n\t function isLocal() {\n\t return this.isValid() ? !this._isUTC : false;\n\t }\n\n\t function isUtcOffset() {\n\t return this.isValid() ? this._isUTC : false;\n\t }\n\n\t function isUtc() {\n\t return this.isValid() ? this._isUTC && this._offset === 0 : false;\n\t }\n\n\t // ASP.NET json date format regex\n\t var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n\t // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n\t // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n\t // and further modified to allow for strings containing both week and day\n\t isoRegex =\n\t /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n\t function createDuration(input, key) {\n\t var duration = input,\n\t // matching against regexp is expensive, do it on demand\n\t match = null,\n\t sign,\n\t ret,\n\t diffRes;\n\n\t if (isDuration(input)) {\n\t duration = {\n\t ms: input._milliseconds,\n\t d: input._days,\n\t M: input._months,\n\t };\n\t } else if (isNumber(input) || !isNaN(+input)) {\n\t duration = {};\n\t if (key) {\n\t duration[key] = +input;\n\t } else {\n\t duration.milliseconds = +input;\n\t }\n\t } else if ((match = aspNetRegex.exec(input))) {\n\t sign = match[1] === '-' ? -1 : 1;\n\t duration = {\n\t y: 0,\n\t d: toInt(match[DATE]) * sign,\n\t h: toInt(match[HOUR]) * sign,\n\t m: toInt(match[MINUTE]) * sign,\n\t s: toInt(match[SECOND]) * sign,\n\t ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n\t };\n\t } else if ((match = isoRegex.exec(input))) {\n\t sign = match[1] === '-' ? -1 : 1;\n\t duration = {\n\t y: parseIso(match[2], sign),\n\t M: parseIso(match[3], sign),\n\t w: parseIso(match[4], sign),\n\t d: parseIso(match[5], sign),\n\t h: parseIso(match[6], sign),\n\t m: parseIso(match[7], sign),\n\t s: parseIso(match[8], sign),\n\t };\n\t } else if (duration == null) {\n\t // checks for null or undefined\n\t duration = {};\n\t } else if (\n\t typeof duration === 'object' &&\n\t ('from' in duration || 'to' in duration)\n\t ) {\n\t diffRes = momentsDifference(\n\t createLocal(duration.from),\n\t createLocal(duration.to)\n\t );\n\n\t duration = {};\n\t duration.ms = diffRes.milliseconds;\n\t duration.M = diffRes.months;\n\t }\n\n\t ret = new Duration(duration);\n\n\t if (isDuration(input) && hasOwnProp(input, '_locale')) {\n\t ret._locale = input._locale;\n\t }\n\n\t if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n\t ret._isValid = input._isValid;\n\t }\n\n\t return ret;\n\t }\n\n\t createDuration.fn = Duration.prototype;\n\t createDuration.invalid = createInvalid$1;\n\n\t function parseIso(inp, sign) {\n\t // We'd normally use ~~inp for this, but unfortunately it also\n\t // converts floats to ints.\n\t // inp may be undefined, so careful calling replace on it.\n\t var res = inp && parseFloat(inp.replace(',', '.'));\n\t // apply sign while we're at it\n\t return (isNaN(res) ? 0 : res) * sign;\n\t }\n\n\t function positiveMomentsDifference(base, other) {\n\t var res = {};\n\n\t res.months =\n\t other.month() - base.month() + (other.year() - base.year()) * 12;\n\t if (base.clone().add(res.months, 'M').isAfter(other)) {\n\t --res.months;\n\t }\n\n\t res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n\t return res;\n\t }\n\n\t function momentsDifference(base, other) {\n\t var res;\n\t if (!(base.isValid() && other.isValid())) {\n\t return { milliseconds: 0, months: 0 };\n\t }\n\n\t other = cloneWithOffset(other, base);\n\t if (base.isBefore(other)) {\n\t res = positiveMomentsDifference(base, other);\n\t } else {\n\t res = positiveMomentsDifference(other, base);\n\t res.milliseconds = -res.milliseconds;\n\t res.months = -res.months;\n\t }\n\n\t return res;\n\t }\n\n\t // TODO: remove 'name' arg after deprecation is removed\n\t function createAdder(direction, name) {\n\t return function (val, period) {\n\t var dur, tmp;\n\t //invert the arguments, but complain about it\n\t if (period !== null && !isNaN(+period)) {\n\t deprecateSimple(\n\t name,\n\t 'moment().' +\n\t name +\n\t '(period, number) is deprecated. Please use moment().' +\n\t name +\n\t '(number, period). ' +\n\t 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n\t );\n\t tmp = val;\n\t val = period;\n\t period = tmp;\n\t }\n\n\t dur = createDuration(val, period);\n\t addSubtract(this, dur, direction);\n\t return this;\n\t };\n\t }\n\n\t function addSubtract(mom, duration, isAdding, updateOffset) {\n\t var milliseconds = duration._milliseconds,\n\t days = absRound(duration._days),\n\t months = absRound(duration._months);\n\n\t if (!mom.isValid()) {\n\t // No op\n\t return;\n\t }\n\n\t updateOffset = updateOffset == null ? true : updateOffset;\n\n\t if (months) {\n\t setMonth(mom, get(mom, 'Month') + months * isAdding);\n\t }\n\t if (days) {\n\t set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n\t }\n\t if (milliseconds) {\n\t mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n\t }\n\t if (updateOffset) {\n\t hooks.updateOffset(mom, days || months);\n\t }\n\t }\n\n\t var add = createAdder(1, 'add'),\n\t subtract = createAdder(-1, 'subtract');\n\n\t function isString(input) {\n\t return typeof input === 'string' || input instanceof String;\n\t }\n\n\t // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n\t function isMomentInput(input) {\n\t return (\n\t isMoment(input) ||\n\t isDate(input) ||\n\t isString(input) ||\n\t isNumber(input) ||\n\t isNumberOrStringArray(input) ||\n\t isMomentInputObject(input) ||\n\t input === null ||\n\t input === undefined\n\t );\n\t }\n\n\t function isMomentInputObject(input) {\n\t var objectTest = isObject(input) && !isObjectEmpty(input),\n\t propertyTest = false,\n\t properties = [\n\t 'years',\n\t 'year',\n\t 'y',\n\t 'months',\n\t 'month',\n\t 'M',\n\t 'days',\n\t 'day',\n\t 'd',\n\t 'dates',\n\t 'date',\n\t 'D',\n\t 'hours',\n\t 'hour',\n\t 'h',\n\t 'minutes',\n\t 'minute',\n\t 'm',\n\t 'seconds',\n\t 'second',\n\t 's',\n\t 'milliseconds',\n\t 'millisecond',\n\t 'ms',\n\t ],\n\t i,\n\t property,\n\t propertyLen = properties.length;\n\n\t for (i = 0; i < propertyLen; i += 1) {\n\t property = properties[i];\n\t propertyTest = propertyTest || hasOwnProp(input, property);\n\t }\n\n\t return objectTest && propertyTest;\n\t }\n\n\t function isNumberOrStringArray(input) {\n\t var arrayTest = isArray(input),\n\t dataTypeTest = false;\n\t if (arrayTest) {\n\t dataTypeTest =\n\t input.filter(function (item) {\n\t return !isNumber(item) && isString(input);\n\t }).length === 0;\n\t }\n\t return arrayTest && dataTypeTest;\n\t }\n\n\t function isCalendarSpec(input) {\n\t var objectTest = isObject(input) && !isObjectEmpty(input),\n\t propertyTest = false,\n\t properties = [\n\t 'sameDay',\n\t 'nextDay',\n\t 'lastDay',\n\t 'nextWeek',\n\t 'lastWeek',\n\t 'sameElse',\n\t ],\n\t i,\n\t property;\n\n\t for (i = 0; i < properties.length; i += 1) {\n\t property = properties[i];\n\t propertyTest = propertyTest || hasOwnProp(input, property);\n\t }\n\n\t return objectTest && propertyTest;\n\t }\n\n\t function getCalendarFormat(myMoment, now) {\n\t var diff = myMoment.diff(now, 'days', true);\n\t return diff < -6\n\t ? 'sameElse'\n\t : diff < -1\n\t ? 'lastWeek'\n\t : diff < 0\n\t ? 'lastDay'\n\t : diff < 1\n\t ? 'sameDay'\n\t : diff < 2\n\t ? 'nextDay'\n\t : diff < 7\n\t ? 'nextWeek'\n\t : 'sameElse';\n\t }\n\n\t function calendar$1(time, formats) {\n\t // Support for single parameter, formats only overload to the calendar function\n\t if (arguments.length === 1) {\n\t if (!arguments[0]) {\n\t time = undefined;\n\t formats = undefined;\n\t } else if (isMomentInput(arguments[0])) {\n\t time = arguments[0];\n\t formats = undefined;\n\t } else if (isCalendarSpec(arguments[0])) {\n\t formats = arguments[0];\n\t time = undefined;\n\t }\n\t }\n\t // We want to compare the start of today, vs this.\n\t // Getting start-of-today depends on whether we're local/utc/offset or not.\n\t var now = time || createLocal(),\n\t sod = cloneWithOffset(now, this).startOf('day'),\n\t format = hooks.calendarFormat(this, sod) || 'sameElse',\n\t output =\n\t formats &&\n\t (isFunction(formats[format])\n\t ? formats[format].call(this, now)\n\t : formats[format]);\n\n\t return this.format(\n\t output || this.localeData().calendar(format, this, createLocal(now))\n\t );\n\t }\n\n\t function clone() {\n\t return new Moment(this);\n\t }\n\n\t function isAfter(input, units) {\n\t var localInput = isMoment(input) ? input : createLocal(input);\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(units) || 'millisecond';\n\t if (units === 'millisecond') {\n\t return this.valueOf() > localInput.valueOf();\n\t } else {\n\t return localInput.valueOf() < this.clone().startOf(units).valueOf();\n\t }\n\t }\n\n\t function isBefore(input, units) {\n\t var localInput = isMoment(input) ? input : createLocal(input);\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(units) || 'millisecond';\n\t if (units === 'millisecond') {\n\t return this.valueOf() < localInput.valueOf();\n\t } else {\n\t return this.clone().endOf(units).valueOf() < localInput.valueOf();\n\t }\n\t }\n\n\t function isBetween(from, to, units, inclusivity) {\n\t var localFrom = isMoment(from) ? from : createLocal(from),\n\t localTo = isMoment(to) ? to : createLocal(to);\n\t if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n\t return false;\n\t }\n\t inclusivity = inclusivity || '()';\n\t return (\n\t (inclusivity[0] === '('\n\t ? this.isAfter(localFrom, units)\n\t : !this.isBefore(localFrom, units)) &&\n\t (inclusivity[1] === ')'\n\t ? this.isBefore(localTo, units)\n\t : !this.isAfter(localTo, units))\n\t );\n\t }\n\n\t function isSame(input, units) {\n\t var localInput = isMoment(input) ? input : createLocal(input),\n\t inputMs;\n\t if (!(this.isValid() && localInput.isValid())) {\n\t return false;\n\t }\n\t units = normalizeUnits(units) || 'millisecond';\n\t if (units === 'millisecond') {\n\t return this.valueOf() === localInput.valueOf();\n\t } else {\n\t inputMs = localInput.valueOf();\n\t return (\n\t this.clone().startOf(units).valueOf() <= inputMs &&\n\t inputMs <= this.clone().endOf(units).valueOf()\n\t );\n\t }\n\t }\n\n\t function isSameOrAfter(input, units) {\n\t return this.isSame(input, units) || this.isAfter(input, units);\n\t }\n\n\t function isSameOrBefore(input, units) {\n\t return this.isSame(input, units) || this.isBefore(input, units);\n\t }\n\n\t function diff(input, units, asFloat) {\n\t var that, zoneDelta, output;\n\n\t if (!this.isValid()) {\n\t return NaN;\n\t }\n\n\t that = cloneWithOffset(input, this);\n\n\t if (!that.isValid()) {\n\t return NaN;\n\t }\n\n\t zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n\t units = normalizeUnits(units);\n\n\t switch (units) {\n\t case 'year':\n\t output = monthDiff(this, that) / 12;\n\t break;\n\t case 'month':\n\t output = monthDiff(this, that);\n\t break;\n\t case 'quarter':\n\t output = monthDiff(this, that) / 3;\n\t break;\n\t case 'second':\n\t output = (this - that) / 1e3;\n\t break; // 1000\n\t case 'minute':\n\t output = (this - that) / 6e4;\n\t break; // 1000 * 60\n\t case 'hour':\n\t output = (this - that) / 36e5;\n\t break; // 1000 * 60 * 60\n\t case 'day':\n\t output = (this - that - zoneDelta) / 864e5;\n\t break; // 1000 * 60 * 60 * 24, negate dst\n\t case 'week':\n\t output = (this - that - zoneDelta) / 6048e5;\n\t break; // 1000 * 60 * 60 * 24 * 7, negate dst\n\t default:\n\t output = this - that;\n\t }\n\n\t return asFloat ? output : absFloor(output);\n\t }\n\n\t function monthDiff(a, b) {\n\t if (a.date() < b.date()) {\n\t // end-of-month calculations work correct when the start month has more\n\t // days than the end month.\n\t return -monthDiff(b, a);\n\t }\n\t // difference in months\n\t var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n\t // b is in (anchor - 1 month, anchor + 1 month)\n\t anchor = a.clone().add(wholeMonthDiff, 'months'),\n\t anchor2,\n\t adjust;\n\n\t if (b - anchor < 0) {\n\t anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n\t // linear across the month\n\t adjust = (b - anchor) / (anchor - anchor2);\n\t } else {\n\t anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n\t // linear across the month\n\t adjust = (b - anchor) / (anchor2 - anchor);\n\t }\n\n\t //check for negative zero, return zero if negative zero\n\t return -(wholeMonthDiff + adjust) || 0;\n\t }\n\n\t hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n\t hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n\t function toString() {\n\t return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n\t }\n\n\t function toISOString(keepOffset) {\n\t if (!this.isValid()) {\n\t return null;\n\t }\n\t var utc = keepOffset !== true,\n\t m = utc ? this.clone().utc() : this;\n\t if (m.year() < 0 || m.year() > 9999) {\n\t return formatMoment(\n\t m,\n\t utc\n\t ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n\t : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n\t );\n\t }\n\t if (isFunction(Date.prototype.toISOString)) {\n\t // native implementation is ~50x faster, use it when we can\n\t if (utc) {\n\t return this.toDate().toISOString();\n\t } else {\n\t return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n\t .toISOString()\n\t .replace('Z', formatMoment(m, 'Z'));\n\t }\n\t }\n\t return formatMoment(\n\t m,\n\t utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n\t );\n\t }\n\n\t /**\n\t * Return a human readable representation of a moment that can\n\t * also be evaluated to get a new moment which is the same\n\t *\n\t * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n\t */\n\t function inspect() {\n\t if (!this.isValid()) {\n\t return 'moment.invalid(/* ' + this._i + ' */)';\n\t }\n\t var func = 'moment',\n\t zone = '',\n\t prefix,\n\t year,\n\t datetime,\n\t suffix;\n\t if (!this.isLocal()) {\n\t func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n\t zone = 'Z';\n\t }\n\t prefix = '[' + func + '(\"]';\n\t year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n\t datetime = '-MM-DD[T]HH:mm:ss.SSS';\n\t suffix = zone + '[\")]';\n\n\t return this.format(prefix + year + datetime + suffix);\n\t }\n\n\t function format(inputString) {\n\t if (!inputString) {\n\t inputString = this.isUtc()\n\t ? hooks.defaultFormatUtc\n\t : hooks.defaultFormat;\n\t }\n\t var output = formatMoment(this, inputString);\n\t return this.localeData().postformat(output);\n\t }\n\n\t function from(time, withoutSuffix) {\n\t if (\n\t this.isValid() &&\n\t ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n\t ) {\n\t return createDuration({ to: this, from: time })\n\t .locale(this.locale())\n\t .humanize(!withoutSuffix);\n\t } else {\n\t return this.localeData().invalidDate();\n\t }\n\t }\n\n\t function fromNow(withoutSuffix) {\n\t return this.from(createLocal(), withoutSuffix);\n\t }\n\n\t function to(time, withoutSuffix) {\n\t if (\n\t this.isValid() &&\n\t ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n\t ) {\n\t return createDuration({ from: this, to: time })\n\t .locale(this.locale())\n\t .humanize(!withoutSuffix);\n\t } else {\n\t return this.localeData().invalidDate();\n\t }\n\t }\n\n\t function toNow(withoutSuffix) {\n\t return this.to(createLocal(), withoutSuffix);\n\t }\n\n\t // If passed a locale key, it will set the locale for this\n\t // instance. Otherwise, it will return the locale configuration\n\t // variables for this instance.\n\t function locale(key) {\n\t var newLocaleData;\n\n\t if (key === undefined) {\n\t return this._locale._abbr;\n\t } else {\n\t newLocaleData = getLocale(key);\n\t if (newLocaleData != null) {\n\t this._locale = newLocaleData;\n\t }\n\t return this;\n\t }\n\t }\n\n\t var lang = deprecate(\n\t 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n\t function (key) {\n\t if (key === undefined) {\n\t return this.localeData();\n\t } else {\n\t return this.locale(key);\n\t }\n\t }\n\t );\n\n\t function localeData() {\n\t return this._locale;\n\t }\n\n\t var MS_PER_SECOND = 1000,\n\t MS_PER_MINUTE = 60 * MS_PER_SECOND,\n\t MS_PER_HOUR = 60 * MS_PER_MINUTE,\n\t MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n\t // actual modulo - handles negative numbers (for dates before 1970):\n\t function mod$1(dividend, divisor) {\n\t return ((dividend % divisor) + divisor) % divisor;\n\t }\n\n\t function localStartOfDate(y, m, d) {\n\t // the date constructor remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t // preserve leap years using a full 400 year cycle, then reset\n\t return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n\t } else {\n\t return new Date(y, m, d).valueOf();\n\t }\n\t }\n\n\t function utcStartOfDate(y, m, d) {\n\t // Date.UTC remaps years 0-99 to 1900-1999\n\t if (y < 100 && y >= 0) {\n\t // preserve leap years using a full 400 year cycle, then reset\n\t return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n\t } else {\n\t return Date.UTC(y, m, d);\n\t }\n\t }\n\n\t function startOf(units) {\n\t var time, startOfDate;\n\t units = normalizeUnits(units);\n\t if (units === undefined || units === 'millisecond' || !this.isValid()) {\n\t return this;\n\t }\n\n\t startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n\t switch (units) {\n\t case 'year':\n\t time = startOfDate(this.year(), 0, 1);\n\t break;\n\t case 'quarter':\n\t time = startOfDate(\n\t this.year(),\n\t this.month() - (this.month() % 3),\n\t 1\n\t );\n\t break;\n\t case 'month':\n\t time = startOfDate(this.year(), this.month(), 1);\n\t break;\n\t case 'week':\n\t time = startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - this.weekday()\n\t );\n\t break;\n\t case 'isoWeek':\n\t time = startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - (this.isoWeekday() - 1)\n\t );\n\t break;\n\t case 'day':\n\t case 'date':\n\t time = startOfDate(this.year(), this.month(), this.date());\n\t break;\n\t case 'hour':\n\t time = this._d.valueOf();\n\t time -= mod$1(\n\t time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n\t MS_PER_HOUR\n\t );\n\t break;\n\t case 'minute':\n\t time = this._d.valueOf();\n\t time -= mod$1(time, MS_PER_MINUTE);\n\t break;\n\t case 'second':\n\t time = this._d.valueOf();\n\t time -= mod$1(time, MS_PER_SECOND);\n\t break;\n\t }\n\n\t this._d.setTime(time);\n\t hooks.updateOffset(this, true);\n\t return this;\n\t }\n\n\t function endOf(units) {\n\t var time, startOfDate;\n\t units = normalizeUnits(units);\n\t if (units === undefined || units === 'millisecond' || !this.isValid()) {\n\t return this;\n\t }\n\n\t startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n\t switch (units) {\n\t case 'year':\n\t time = startOfDate(this.year() + 1, 0, 1) - 1;\n\t break;\n\t case 'quarter':\n\t time =\n\t startOfDate(\n\t this.year(),\n\t this.month() - (this.month() % 3) + 3,\n\t 1\n\t ) - 1;\n\t break;\n\t case 'month':\n\t time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n\t break;\n\t case 'week':\n\t time =\n\t startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - this.weekday() + 7\n\t ) - 1;\n\t break;\n\t case 'isoWeek':\n\t time =\n\t startOfDate(\n\t this.year(),\n\t this.month(),\n\t this.date() - (this.isoWeekday() - 1) + 7\n\t ) - 1;\n\t break;\n\t case 'day':\n\t case 'date':\n\t time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n\t break;\n\t case 'hour':\n\t time = this._d.valueOf();\n\t time +=\n\t MS_PER_HOUR -\n\t mod$1(\n\t time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n\t MS_PER_HOUR\n\t ) -\n\t 1;\n\t break;\n\t case 'minute':\n\t time = this._d.valueOf();\n\t time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n\t break;\n\t case 'second':\n\t time = this._d.valueOf();\n\t time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n\t break;\n\t }\n\n\t this._d.setTime(time);\n\t hooks.updateOffset(this, true);\n\t return this;\n\t }\n\n\t function valueOf() {\n\t return this._d.valueOf() - (this._offset || 0) * 60000;\n\t }\n\n\t function unix() {\n\t return Math.floor(this.valueOf() / 1000);\n\t }\n\n\t function toDate() {\n\t return new Date(this.valueOf());\n\t }\n\n\t function toArray() {\n\t var m = this;\n\t return [\n\t m.year(),\n\t m.month(),\n\t m.date(),\n\t m.hour(),\n\t m.minute(),\n\t m.second(),\n\t m.millisecond(),\n\t ];\n\t }\n\n\t function toObject() {\n\t var m = this;\n\t return {\n\t years: m.year(),\n\t months: m.month(),\n\t date: m.date(),\n\t hours: m.hours(),\n\t minutes: m.minutes(),\n\t seconds: m.seconds(),\n\t milliseconds: m.milliseconds(),\n\t };\n\t }\n\n\t function toJSON() {\n\t // new Date(NaN).toJSON() === null\n\t return this.isValid() ? this.toISOString() : null;\n\t }\n\n\t function isValid$2() {\n\t return isValid(this);\n\t }\n\n\t function parsingFlags() {\n\t return extend({}, getParsingFlags(this));\n\t }\n\n\t function invalidAt() {\n\t return getParsingFlags(this).overflow;\n\t }\n\n\t function creationData() {\n\t return {\n\t input: this._i,\n\t format: this._f,\n\t locale: this._locale,\n\t isUTC: this._isUTC,\n\t strict: this._strict,\n\t };\n\t }\n\n\t addFormatToken('N', 0, 0, 'eraAbbr');\n\t addFormatToken('NN', 0, 0, 'eraAbbr');\n\t addFormatToken('NNN', 0, 0, 'eraAbbr');\n\t addFormatToken('NNNN', 0, 0, 'eraName');\n\t addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n\t addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n\t addFormatToken('y', ['yy', 2], 0, 'eraYear');\n\t addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n\t addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n\t addRegexToken('N', matchEraAbbr);\n\t addRegexToken('NN', matchEraAbbr);\n\t addRegexToken('NNN', matchEraAbbr);\n\t addRegexToken('NNNN', matchEraName);\n\t addRegexToken('NNNNN', matchEraNarrow);\n\n\t addParseToken(\n\t ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n\t function (input, array, config, token) {\n\t var era = config._locale.erasParse(input, token, config._strict);\n\t if (era) {\n\t getParsingFlags(config).era = era;\n\t } else {\n\t getParsingFlags(config).invalidEra = input;\n\t }\n\t }\n\t );\n\n\t addRegexToken('y', matchUnsigned);\n\t addRegexToken('yy', matchUnsigned);\n\t addRegexToken('yyy', matchUnsigned);\n\t addRegexToken('yyyy', matchUnsigned);\n\t addRegexToken('yo', matchEraYearOrdinal);\n\n\t addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n\t addParseToken(['yo'], function (input, array, config, token) {\n\t var match;\n\t if (config._locale._eraYearOrdinalRegex) {\n\t match = input.match(config._locale._eraYearOrdinalRegex);\n\t }\n\n\t if (config._locale.eraYearOrdinalParse) {\n\t array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n\t } else {\n\t array[YEAR] = parseInt(input, 10);\n\t }\n\t });\n\n\t function localeEras(m, format) {\n\t var i,\n\t l,\n\t date,\n\t eras = this._eras || getLocale('en')._eras;\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t switch (typeof eras[i].since) {\n\t case 'string':\n\t // truncate time\n\t date = hooks(eras[i].since).startOf('day');\n\t eras[i].since = date.valueOf();\n\t break;\n\t }\n\n\t switch (typeof eras[i].until) {\n\t case 'undefined':\n\t eras[i].until = +Infinity;\n\t break;\n\t case 'string':\n\t // truncate time\n\t date = hooks(eras[i].until).startOf('day').valueOf();\n\t eras[i].until = date.valueOf();\n\t break;\n\t }\n\t }\n\t return eras;\n\t }\n\n\t function localeErasParse(eraName, format, strict) {\n\t var i,\n\t l,\n\t eras = this.eras(),\n\t name,\n\t abbr,\n\t narrow;\n\t eraName = eraName.toUpperCase();\n\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t name = eras[i].name.toUpperCase();\n\t abbr = eras[i].abbr.toUpperCase();\n\t narrow = eras[i].narrow.toUpperCase();\n\n\t if (strict) {\n\t switch (format) {\n\t case 'N':\n\t case 'NN':\n\t case 'NNN':\n\t if (abbr === eraName) {\n\t return eras[i];\n\t }\n\t break;\n\n\t case 'NNNN':\n\t if (name === eraName) {\n\t return eras[i];\n\t }\n\t break;\n\n\t case 'NNNNN':\n\t if (narrow === eraName) {\n\t return eras[i];\n\t }\n\t break;\n\t }\n\t } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n\t return eras[i];\n\t }\n\t }\n\t }\n\n\t function localeErasConvertYear(era, year) {\n\t var dir = era.since <= era.until ? +1 : -1;\n\t if (year === undefined) {\n\t return hooks(era.since).year();\n\t } else {\n\t return hooks(era.since).year() + (year - era.offset) * dir;\n\t }\n\t }\n\n\t function getEraName() {\n\t var i,\n\t l,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\n\t if (eras[i].since <= val && val <= eras[i].until) {\n\t return eras[i].name;\n\t }\n\t if (eras[i].until <= val && val <= eras[i].since) {\n\t return eras[i].name;\n\t }\n\t }\n\n\t return '';\n\t }\n\n\t function getEraNarrow() {\n\t var i,\n\t l,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\n\t if (eras[i].since <= val && val <= eras[i].until) {\n\t return eras[i].narrow;\n\t }\n\t if (eras[i].until <= val && val <= eras[i].since) {\n\t return eras[i].narrow;\n\t }\n\t }\n\n\t return '';\n\t }\n\n\t function getEraAbbr() {\n\t var i,\n\t l,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\n\t if (eras[i].since <= val && val <= eras[i].until) {\n\t return eras[i].abbr;\n\t }\n\t if (eras[i].until <= val && val <= eras[i].since) {\n\t return eras[i].abbr;\n\t }\n\t }\n\n\t return '';\n\t }\n\n\t function getEraYear() {\n\t var i,\n\t l,\n\t dir,\n\t val,\n\t eras = this.localeData().eras();\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n\t // truncate time\n\t val = this.clone().startOf('day').valueOf();\n\n\t if (\n\t (eras[i].since <= val && val <= eras[i].until) ||\n\t (eras[i].until <= val && val <= eras[i].since)\n\t ) {\n\t return (\n\t (this.year() - hooks(eras[i].since).year()) * dir +\n\t eras[i].offset\n\t );\n\t }\n\t }\n\n\t return this.year();\n\t }\n\n\t function erasNameRegex(isStrict) {\n\t if (!hasOwnProp(this, '_erasNameRegex')) {\n\t computeErasParse.call(this);\n\t }\n\t return isStrict ? this._erasNameRegex : this._erasRegex;\n\t }\n\n\t function erasAbbrRegex(isStrict) {\n\t if (!hasOwnProp(this, '_erasAbbrRegex')) {\n\t computeErasParse.call(this);\n\t }\n\t return isStrict ? this._erasAbbrRegex : this._erasRegex;\n\t }\n\n\t function erasNarrowRegex(isStrict) {\n\t if (!hasOwnProp(this, '_erasNarrowRegex')) {\n\t computeErasParse.call(this);\n\t }\n\t return isStrict ? this._erasNarrowRegex : this._erasRegex;\n\t }\n\n\t function matchEraAbbr(isStrict, locale) {\n\t return locale.erasAbbrRegex(isStrict);\n\t }\n\n\t function matchEraName(isStrict, locale) {\n\t return locale.erasNameRegex(isStrict);\n\t }\n\n\t function matchEraNarrow(isStrict, locale) {\n\t return locale.erasNarrowRegex(isStrict);\n\t }\n\n\t function matchEraYearOrdinal(isStrict, locale) {\n\t return locale._eraYearOrdinalRegex || matchUnsigned;\n\t }\n\n\t function computeErasParse() {\n\t var abbrPieces = [],\n\t namePieces = [],\n\t narrowPieces = [],\n\t mixedPieces = [],\n\t i,\n\t l,\n\t erasName,\n\t erasAbbr,\n\t erasNarrow,\n\t eras = this.eras();\n\n\t for (i = 0, l = eras.length; i < l; ++i) {\n\t erasName = regexEscape(eras[i].name);\n\t erasAbbr = regexEscape(eras[i].abbr);\n\t erasNarrow = regexEscape(eras[i].narrow);\n\n\t namePieces.push(erasName);\n\t abbrPieces.push(erasAbbr);\n\t narrowPieces.push(erasNarrow);\n\t mixedPieces.push(erasName);\n\t mixedPieces.push(erasAbbr);\n\t mixedPieces.push(erasNarrow);\n\t }\n\n\t this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n\t this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n\t this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n\t this._erasNarrowRegex = new RegExp(\n\t '^(' + narrowPieces.join('|') + ')',\n\t 'i'\n\t );\n\t }\n\n\t // FORMATTING\n\n\t addFormatToken(0, ['gg', 2], 0, function () {\n\t return this.weekYear() % 100;\n\t });\n\n\t addFormatToken(0, ['GG', 2], 0, function () {\n\t return this.isoWeekYear() % 100;\n\t });\n\n\t function addWeekYearFormatToken(token, getter) {\n\t addFormatToken(0, [token, token.length], 0, getter);\n\t }\n\n\t addWeekYearFormatToken('gggg', 'weekYear');\n\t addWeekYearFormatToken('ggggg', 'weekYear');\n\t addWeekYearFormatToken('GGGG', 'isoWeekYear');\n\t addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n\t // ALIASES\n\n\t // PARSING\n\n\t addRegexToken('G', matchSigned);\n\t addRegexToken('g', matchSigned);\n\t addRegexToken('GG', match1to2, match2);\n\t addRegexToken('gg', match1to2, match2);\n\t addRegexToken('GGGG', match1to4, match4);\n\t addRegexToken('gggg', match1to4, match4);\n\t addRegexToken('GGGGG', match1to6, match6);\n\t addRegexToken('ggggg', match1to6, match6);\n\n\t addWeekParseToken(\n\t ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n\t function (input, week, config, token) {\n\t week[token.substr(0, 2)] = toInt(input);\n\t }\n\t );\n\n\t addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n\t week[token] = hooks.parseTwoDigitYear(input);\n\t });\n\n\t // MOMENTS\n\n\t function getSetWeekYear(input) {\n\t return getSetWeekYearHelper.call(\n\t this,\n\t input,\n\t this.week(),\n\t this.weekday() + this.localeData()._week.dow,\n\t this.localeData()._week.dow,\n\t this.localeData()._week.doy\n\t );\n\t }\n\n\t function getSetISOWeekYear(input) {\n\t return getSetWeekYearHelper.call(\n\t this,\n\t input,\n\t this.isoWeek(),\n\t this.isoWeekday(),\n\t 1,\n\t 4\n\t );\n\t }\n\n\t function getISOWeeksInYear() {\n\t return weeksInYear(this.year(), 1, 4);\n\t }\n\n\t function getISOWeeksInISOWeekYear() {\n\t return weeksInYear(this.isoWeekYear(), 1, 4);\n\t }\n\n\t function getWeeksInYear() {\n\t var weekInfo = this.localeData()._week;\n\t return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n\t }\n\n\t function getWeeksInWeekYear() {\n\t var weekInfo = this.localeData()._week;\n\t return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n\t }\n\n\t function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n\t var weeksTarget;\n\t if (input == null) {\n\t return weekOfYear(this, dow, doy).year;\n\t } else {\n\t weeksTarget = weeksInYear(input, dow, doy);\n\t if (week > weeksTarget) {\n\t week = weeksTarget;\n\t }\n\t return setWeekAll.call(this, input, week, weekday, dow, doy);\n\t }\n\t }\n\n\t function setWeekAll(weekYear, week, weekday, dow, doy) {\n\t var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n\t date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n\t this.year(date.getUTCFullYear());\n\t this.month(date.getUTCMonth());\n\t this.date(date.getUTCDate());\n\t return this;\n\t }\n\n\t // FORMATTING\n\n\t addFormatToken('Q', 0, 'Qo', 'quarter');\n\n\t // PARSING\n\n\t addRegexToken('Q', match1);\n\t addParseToken('Q', function (input, array) {\n\t array[MONTH] = (toInt(input) - 1) * 3;\n\t });\n\n\t // MOMENTS\n\n\t function getSetQuarter(input) {\n\t return input == null\n\t ? Math.ceil((this.month() + 1) / 3)\n\t : this.month((input - 1) * 3 + (this.month() % 3));\n\t }\n\n\t // FORMATTING\n\n\t addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n\t // PARSING\n\n\t addRegexToken('D', match1to2, match1to2NoLeadingZero);\n\t addRegexToken('DD', match1to2, match2);\n\t addRegexToken('Do', function (isStrict, locale) {\n\t // TODO: Remove \"ordinalParse\" fallback in next major release.\n\t return isStrict\n\t ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n\t : locale._dayOfMonthOrdinalParseLenient;\n\t });\n\n\t addParseToken(['D', 'DD'], DATE);\n\t addParseToken('Do', function (input, array) {\n\t array[DATE] = toInt(input.match(match1to2)[0]);\n\t });\n\n\t // MOMENTS\n\n\t var getSetDayOfMonth = makeGetSet('Date', true);\n\n\t // FORMATTING\n\n\t addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n\t // PARSING\n\n\t addRegexToken('DDD', match1to3);\n\t addRegexToken('DDDD', match3);\n\t addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n\t config._dayOfYear = toInt(input);\n\t });\n\n\t // HELPERS\n\n\t // MOMENTS\n\n\t function getSetDayOfYear(input) {\n\t var dayOfYear =\n\t Math.round(\n\t (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n\t ) + 1;\n\t return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n\t }\n\n\t // FORMATTING\n\n\t addFormatToken('m', ['mm', 2], 0, 'minute');\n\n\t // PARSING\n\n\t addRegexToken('m', match1to2, match1to2HasZero);\n\t addRegexToken('mm', match1to2, match2);\n\t addParseToken(['m', 'mm'], MINUTE);\n\n\t // MOMENTS\n\n\t var getSetMinute = makeGetSet('Minutes', false);\n\n\t // FORMATTING\n\n\t addFormatToken('s', ['ss', 2], 0, 'second');\n\n\t // PARSING\n\n\t addRegexToken('s', match1to2, match1to2HasZero);\n\t addRegexToken('ss', match1to2, match2);\n\t addParseToken(['s', 'ss'], SECOND);\n\n\t // MOMENTS\n\n\t var getSetSecond = makeGetSet('Seconds', false);\n\n\t // FORMATTING\n\n\t addFormatToken('S', 0, 0, function () {\n\t return ~~(this.millisecond() / 100);\n\t });\n\n\t addFormatToken(0, ['SS', 2], 0, function () {\n\t return ~~(this.millisecond() / 10);\n\t });\n\n\t addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n\t addFormatToken(0, ['SSSS', 4], 0, function () {\n\t return this.millisecond() * 10;\n\t });\n\t addFormatToken(0, ['SSSSS', 5], 0, function () {\n\t return this.millisecond() * 100;\n\t });\n\t addFormatToken(0, ['SSSSSS', 6], 0, function () {\n\t return this.millisecond() * 1000;\n\t });\n\t addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n\t return this.millisecond() * 10000;\n\t });\n\t addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n\t return this.millisecond() * 100000;\n\t });\n\t addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n\t return this.millisecond() * 1000000;\n\t });\n\n\t // PARSING\n\n\t addRegexToken('S', match1to3, match1);\n\t addRegexToken('SS', match1to3, match2);\n\t addRegexToken('SSS', match1to3, match3);\n\n\t var token, getSetMillisecond;\n\t for (token = 'SSSS'; token.length <= 9; token += 'S') {\n\t addRegexToken(token, matchUnsigned);\n\t }\n\n\t function parseMs(input, array) {\n\t array[MILLISECOND] = toInt(('0.' + input) * 1000);\n\t }\n\n\t for (token = 'S'; token.length <= 9; token += 'S') {\n\t addParseToken(token, parseMs);\n\t }\n\n\t getSetMillisecond = makeGetSet('Milliseconds', false);\n\n\t // FORMATTING\n\n\t addFormatToken('z', 0, 0, 'zoneAbbr');\n\t addFormatToken('zz', 0, 0, 'zoneName');\n\n\t // MOMENTS\n\n\t function getZoneAbbr() {\n\t return this._isUTC ? 'UTC' : '';\n\t }\n\n\t function getZoneName() {\n\t return this._isUTC ? 'Coordinated Universal Time' : '';\n\t }\n\n\t var proto = Moment.prototype;\n\n\t proto.add = add;\n\t proto.calendar = calendar$1;\n\t proto.clone = clone;\n\t proto.diff = diff;\n\t proto.endOf = endOf;\n\t proto.format = format;\n\t proto.from = from;\n\t proto.fromNow = fromNow;\n\t proto.to = to;\n\t proto.toNow = toNow;\n\t proto.get = stringGet;\n\t proto.invalidAt = invalidAt;\n\t proto.isAfter = isAfter;\n\t proto.isBefore = isBefore;\n\t proto.isBetween = isBetween;\n\t proto.isSame = isSame;\n\t proto.isSameOrAfter = isSameOrAfter;\n\t proto.isSameOrBefore = isSameOrBefore;\n\t proto.isValid = isValid$2;\n\t proto.lang = lang;\n\t proto.locale = locale;\n\t proto.localeData = localeData;\n\t proto.max = prototypeMax;\n\t proto.min = prototypeMin;\n\t proto.parsingFlags = parsingFlags;\n\t proto.set = stringSet;\n\t proto.startOf = startOf;\n\t proto.subtract = subtract;\n\t proto.toArray = toArray;\n\t proto.toObject = toObject;\n\t proto.toDate = toDate;\n\t proto.toISOString = toISOString;\n\t proto.inspect = inspect;\n\t if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n\t proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n\t return 'Moment<' + this.format() + '>';\n\t };\n\t }\n\t proto.toJSON = toJSON;\n\t proto.toString = toString;\n\t proto.unix = unix;\n\t proto.valueOf = valueOf;\n\t proto.creationData = creationData;\n\t proto.eraName = getEraName;\n\t proto.eraNarrow = getEraNarrow;\n\t proto.eraAbbr = getEraAbbr;\n\t proto.eraYear = getEraYear;\n\t proto.year = getSetYear;\n\t proto.isLeapYear = getIsLeapYear;\n\t proto.weekYear = getSetWeekYear;\n\t proto.isoWeekYear = getSetISOWeekYear;\n\t proto.quarter = proto.quarters = getSetQuarter;\n\t proto.month = getSetMonth;\n\t proto.daysInMonth = getDaysInMonth;\n\t proto.week = proto.weeks = getSetWeek;\n\t proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n\t proto.weeksInYear = getWeeksInYear;\n\t proto.weeksInWeekYear = getWeeksInWeekYear;\n\t proto.isoWeeksInYear = getISOWeeksInYear;\n\t proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n\t proto.date = getSetDayOfMonth;\n\t proto.day = proto.days = getSetDayOfWeek;\n\t proto.weekday = getSetLocaleDayOfWeek;\n\t proto.isoWeekday = getSetISODayOfWeek;\n\t proto.dayOfYear = getSetDayOfYear;\n\t proto.hour = proto.hours = getSetHour;\n\t proto.minute = proto.minutes = getSetMinute;\n\t proto.second = proto.seconds = getSetSecond;\n\t proto.millisecond = proto.milliseconds = getSetMillisecond;\n\t proto.utcOffset = getSetOffset;\n\t proto.utc = setOffsetToUTC;\n\t proto.local = setOffsetToLocal;\n\t proto.parseZone = setOffsetToParsedOffset;\n\t proto.hasAlignedHourOffset = hasAlignedHourOffset;\n\t proto.isDST = isDaylightSavingTime;\n\t proto.isLocal = isLocal;\n\t proto.isUtcOffset = isUtcOffset;\n\t proto.isUtc = isUtc;\n\t proto.isUTC = isUtc;\n\t proto.zoneAbbr = getZoneAbbr;\n\t proto.zoneName = getZoneName;\n\t proto.dates = deprecate(\n\t 'dates accessor is deprecated. Use date instead.',\n\t getSetDayOfMonth\n\t );\n\t proto.months = deprecate(\n\t 'months accessor is deprecated. Use month instead',\n\t getSetMonth\n\t );\n\t proto.years = deprecate(\n\t 'years accessor is deprecated. Use year instead',\n\t getSetYear\n\t );\n\t proto.zone = deprecate(\n\t 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n\t getSetZone\n\t );\n\t proto.isDSTShifted = deprecate(\n\t 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n\t isDaylightSavingTimeShifted\n\t );\n\n\t function createUnix(input) {\n\t return createLocal(input * 1000);\n\t }\n\n\t function createInZone() {\n\t return createLocal.apply(null, arguments).parseZone();\n\t }\n\n\t function preParsePostFormat(string) {\n\t return string;\n\t }\n\n\t var proto$1 = Locale.prototype;\n\n\t proto$1.calendar = calendar;\n\t proto$1.longDateFormat = longDateFormat;\n\t proto$1.invalidDate = invalidDate;\n\t proto$1.ordinal = ordinal;\n\t proto$1.preparse = preParsePostFormat;\n\t proto$1.postformat = preParsePostFormat;\n\t proto$1.relativeTime = relativeTime;\n\t proto$1.pastFuture = pastFuture;\n\t proto$1.set = set;\n\t proto$1.eras = localeEras;\n\t proto$1.erasParse = localeErasParse;\n\t proto$1.erasConvertYear = localeErasConvertYear;\n\t proto$1.erasAbbrRegex = erasAbbrRegex;\n\t proto$1.erasNameRegex = erasNameRegex;\n\t proto$1.erasNarrowRegex = erasNarrowRegex;\n\n\t proto$1.months = localeMonths;\n\t proto$1.monthsShort = localeMonthsShort;\n\t proto$1.monthsParse = localeMonthsParse;\n\t proto$1.monthsRegex = monthsRegex;\n\t proto$1.monthsShortRegex = monthsShortRegex;\n\t proto$1.week = localeWeek;\n\t proto$1.firstDayOfYear = localeFirstDayOfYear;\n\t proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n\t proto$1.weekdays = localeWeekdays;\n\t proto$1.weekdaysMin = localeWeekdaysMin;\n\t proto$1.weekdaysShort = localeWeekdaysShort;\n\t proto$1.weekdaysParse = localeWeekdaysParse;\n\n\t proto$1.weekdaysRegex = weekdaysRegex;\n\t proto$1.weekdaysShortRegex = weekdaysShortRegex;\n\t proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n\t proto$1.isPM = localeIsPM;\n\t proto$1.meridiem = localeMeridiem;\n\n\t function get$1(format, index, field, setter) {\n\t var locale = getLocale(),\n\t utc = createUTC().set(setter, index);\n\t return locale[field](utc, format);\n\t }\n\n\t function listMonthsImpl(format, index, field) {\n\t if (isNumber(format)) {\n\t index = format;\n\t format = undefined;\n\t }\n\n\t format = format || '';\n\n\t if (index != null) {\n\t return get$1(format, index, field, 'month');\n\t }\n\n\t var i,\n\t out = [];\n\t for (i = 0; i < 12; i++) {\n\t out[i] = get$1(format, i, field, 'month');\n\t }\n\t return out;\n\t }\n\n\t // ()\n\t // (5)\n\t // (fmt, 5)\n\t // (fmt)\n\t // (true)\n\t // (true, 5)\n\t // (true, fmt, 5)\n\t // (true, fmt)\n\t function listWeekdaysImpl(localeSorted, format, index, field) {\n\t if (typeof localeSorted === 'boolean') {\n\t if (isNumber(format)) {\n\t index = format;\n\t format = undefined;\n\t }\n\n\t format = format || '';\n\t } else {\n\t format = localeSorted;\n\t index = format;\n\t localeSorted = false;\n\n\t if (isNumber(format)) {\n\t index = format;\n\t format = undefined;\n\t }\n\n\t format = format || '';\n\t }\n\n\t var locale = getLocale(),\n\t shift = localeSorted ? locale._week.dow : 0,\n\t i,\n\t out = [];\n\n\t if (index != null) {\n\t return get$1(format, (index + shift) % 7, field, 'day');\n\t }\n\n\t for (i = 0; i < 7; i++) {\n\t out[i] = get$1(format, (i + shift) % 7, field, 'day');\n\t }\n\t return out;\n\t }\n\n\t function listMonths(format, index) {\n\t return listMonthsImpl(format, index, 'months');\n\t }\n\n\t function listMonthsShort(format, index) {\n\t return listMonthsImpl(format, index, 'monthsShort');\n\t }\n\n\t function listWeekdays(localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n\t }\n\n\t function listWeekdaysShort(localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n\t }\n\n\t function listWeekdaysMin(localeSorted, format, index) {\n\t return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n\t }\n\n\t getSetGlobalLocale('en', {\n\t eras: [\n\t {\n\t since: '0001-01-01',\n\t until: +Infinity,\n\t offset: 1,\n\t name: 'Anno Domini',\n\t narrow: 'AD',\n\t abbr: 'AD',\n\t },\n\t {\n\t since: '0000-12-31',\n\t until: -Infinity,\n\t offset: 1,\n\t name: 'Before Christ',\n\t narrow: 'BC',\n\t abbr: 'BC',\n\t },\n\t ],\n\t dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n\t ordinal: function (number) {\n\t var b = number % 10,\n\t output =\n\t toInt((number % 100) / 10) === 1\n\t ? 'th'\n\t : b === 1\n\t ? 'st'\n\t : b === 2\n\t ? 'nd'\n\t : b === 3\n\t ? 'rd'\n\t : 'th';\n\t return number + output;\n\t },\n\t });\n\n\t // Side effect imports\n\n\t hooks.lang = deprecate(\n\t 'moment.lang is deprecated. Use moment.locale instead.',\n\t getSetGlobalLocale\n\t );\n\t hooks.langData = deprecate(\n\t 'moment.langData is deprecated. Use moment.localeData instead.',\n\t getLocale\n\t );\n\n\t var mathAbs = Math.abs;\n\n\t function abs() {\n\t var data = this._data;\n\n\t this._milliseconds = mathAbs(this._milliseconds);\n\t this._days = mathAbs(this._days);\n\t this._months = mathAbs(this._months);\n\n\t data.milliseconds = mathAbs(data.milliseconds);\n\t data.seconds = mathAbs(data.seconds);\n\t data.minutes = mathAbs(data.minutes);\n\t data.hours = mathAbs(data.hours);\n\t data.months = mathAbs(data.months);\n\t data.years = mathAbs(data.years);\n\n\t return this;\n\t }\n\n\t function addSubtract$1(duration, input, value, direction) {\n\t var other = createDuration(input, value);\n\n\t duration._milliseconds += direction * other._milliseconds;\n\t duration._days += direction * other._days;\n\t duration._months += direction * other._months;\n\n\t return duration._bubble();\n\t }\n\n\t // supports only 2.0-style add(1, 's') or add(duration)\n\t function add$1(input, value) {\n\t return addSubtract$1(this, input, value, 1);\n\t }\n\n\t // supports only 2.0-style subtract(1, 's') or subtract(duration)\n\t function subtract$1(input, value) {\n\t return addSubtract$1(this, input, value, -1);\n\t }\n\n\t function absCeil(number) {\n\t if (number < 0) {\n\t return Math.floor(number);\n\t } else {\n\t return Math.ceil(number);\n\t }\n\t }\n\n\t function bubble() {\n\t var milliseconds = this._milliseconds,\n\t days = this._days,\n\t months = this._months,\n\t data = this._data,\n\t seconds,\n\t minutes,\n\t hours,\n\t years,\n\t monthsFromDays;\n\n\t // if we have a mix of positive and negative values, bubble down first\n\t // check: https://github.com/moment/moment/issues/2166\n\t if (\n\t !(\n\t (milliseconds >= 0 && days >= 0 && months >= 0) ||\n\t (milliseconds <= 0 && days <= 0 && months <= 0)\n\t )\n\t ) {\n\t milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n\t days = 0;\n\t months = 0;\n\t }\n\n\t // The following code bubbles up values, see the tests for\n\t // examples of what that means.\n\t data.milliseconds = milliseconds % 1000;\n\n\t seconds = absFloor(milliseconds / 1000);\n\t data.seconds = seconds % 60;\n\n\t minutes = absFloor(seconds / 60);\n\t data.minutes = minutes % 60;\n\n\t hours = absFloor(minutes / 60);\n\t data.hours = hours % 24;\n\n\t days += absFloor(hours / 24);\n\n\t // convert days to months\n\t monthsFromDays = absFloor(daysToMonths(days));\n\t months += monthsFromDays;\n\t days -= absCeil(monthsToDays(monthsFromDays));\n\n\t // 12 months -> 1 year\n\t years = absFloor(months / 12);\n\t months %= 12;\n\n\t data.days = days;\n\t data.months = months;\n\t data.years = years;\n\n\t return this;\n\t }\n\n\t function daysToMonths(days) {\n\t // 400 years have 146097 days (taking into account leap year rules)\n\t // 400 years have 12 months === 4800\n\t return (days * 4800) / 146097;\n\t }\n\n\t function monthsToDays(months) {\n\t // the reverse of daysToMonths\n\t return (months * 146097) / 4800;\n\t }\n\n\t function as(units) {\n\t if (!this.isValid()) {\n\t return NaN;\n\t }\n\t var days,\n\t months,\n\t milliseconds = this._milliseconds;\n\n\t units = normalizeUnits(units);\n\n\t if (units === 'month' || units === 'quarter' || units === 'year') {\n\t days = this._days + milliseconds / 864e5;\n\t months = this._months + daysToMonths(days);\n\t switch (units) {\n\t case 'month':\n\t return months;\n\t case 'quarter':\n\t return months / 3;\n\t case 'year':\n\t return months / 12;\n\t }\n\t } else {\n\t // handle milliseconds separately because of floating point math errors (issue #1867)\n\t days = this._days + Math.round(monthsToDays(this._months));\n\t switch (units) {\n\t case 'week':\n\t return days / 7 + milliseconds / 6048e5;\n\t case 'day':\n\t return days + milliseconds / 864e5;\n\t case 'hour':\n\t return days * 24 + milliseconds / 36e5;\n\t case 'minute':\n\t return days * 1440 + milliseconds / 6e4;\n\t case 'second':\n\t return days * 86400 + milliseconds / 1000;\n\t // Math.floor prevents floating point math errors here\n\t case 'millisecond':\n\t return Math.floor(days * 864e5) + milliseconds;\n\t default:\n\t throw new Error('Unknown unit ' + units);\n\t }\n\t }\n\t }\n\n\t function makeAs(alias) {\n\t return function () {\n\t return this.as(alias);\n\t };\n\t }\n\n\t var asMilliseconds = makeAs('ms'),\n\t asSeconds = makeAs('s'),\n\t asMinutes = makeAs('m'),\n\t asHours = makeAs('h'),\n\t asDays = makeAs('d'),\n\t asWeeks = makeAs('w'),\n\t asMonths = makeAs('M'),\n\t asQuarters = makeAs('Q'),\n\t asYears = makeAs('y'),\n\t valueOf$1 = asMilliseconds;\n\n\t function clone$1() {\n\t return createDuration(this);\n\t }\n\n\t function get$2(units) {\n\t units = normalizeUnits(units);\n\t return this.isValid() ? this[units + 's']() : NaN;\n\t }\n\n\t function makeGetter(name) {\n\t return function () {\n\t return this.isValid() ? this._data[name] : NaN;\n\t };\n\t }\n\n\t var milliseconds = makeGetter('milliseconds'),\n\t seconds = makeGetter('seconds'),\n\t minutes = makeGetter('minutes'),\n\t hours = makeGetter('hours'),\n\t days = makeGetter('days'),\n\t months = makeGetter('months'),\n\t years = makeGetter('years');\n\n\t function weeks() {\n\t return absFloor(this.days() / 7);\n\t }\n\n\t var round = Math.round,\n\t thresholds = {\n\t ss: 44, // a few seconds to seconds\n\t s: 45, // seconds to minute\n\t m: 45, // minutes to hour\n\t h: 22, // hours to day\n\t d: 26, // days to month/week\n\t w: null, // weeks to month\n\t M: 11, // months to year\n\t };\n\n\t // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n\t function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n\t return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n\t }\n\n\t function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n\t var duration = createDuration(posNegDuration).abs(),\n\t seconds = round(duration.as('s')),\n\t minutes = round(duration.as('m')),\n\t hours = round(duration.as('h')),\n\t days = round(duration.as('d')),\n\t months = round(duration.as('M')),\n\t weeks = round(duration.as('w')),\n\t years = round(duration.as('y')),\n\t a =\n\t (seconds <= thresholds.ss && ['s', seconds]) ||\n\t (seconds < thresholds.s && ['ss', seconds]) ||\n\t (minutes <= 1 && ['m']) ||\n\t (minutes < thresholds.m && ['mm', minutes]) ||\n\t (hours <= 1 && ['h']) ||\n\t (hours < thresholds.h && ['hh', hours]) ||\n\t (days <= 1 && ['d']) ||\n\t (days < thresholds.d && ['dd', days]);\n\n\t if (thresholds.w != null) {\n\t a =\n\t a ||\n\t (weeks <= 1 && ['w']) ||\n\t (weeks < thresholds.w && ['ww', weeks]);\n\t }\n\t a = a ||\n\t (months <= 1 && ['M']) ||\n\t (months < thresholds.M && ['MM', months]) ||\n\t (years <= 1 && ['y']) || ['yy', years];\n\n\t a[2] = withoutSuffix;\n\t a[3] = +posNegDuration > 0;\n\t a[4] = locale;\n\t return substituteTimeAgo.apply(null, a);\n\t }\n\n\t // This function allows you to set the rounding function for relative time strings\n\t function getSetRelativeTimeRounding(roundingFunction) {\n\t if (roundingFunction === undefined) {\n\t return round;\n\t }\n\t if (typeof roundingFunction === 'function') {\n\t round = roundingFunction;\n\t return true;\n\t }\n\t return false;\n\t }\n\n\t // This function allows you to set a threshold for relative time strings\n\t function getSetRelativeTimeThreshold(threshold, limit) {\n\t if (thresholds[threshold] === undefined) {\n\t return false;\n\t }\n\t if (limit === undefined) {\n\t return thresholds[threshold];\n\t }\n\t thresholds[threshold] = limit;\n\t if (threshold === 's') {\n\t thresholds.ss = limit - 1;\n\t }\n\t return true;\n\t }\n\n\t function humanize(argWithSuffix, argThresholds) {\n\t if (!this.isValid()) {\n\t return this.localeData().invalidDate();\n\t }\n\n\t var withSuffix = false,\n\t th = thresholds,\n\t locale,\n\t output;\n\n\t if (typeof argWithSuffix === 'object') {\n\t argThresholds = argWithSuffix;\n\t argWithSuffix = false;\n\t }\n\t if (typeof argWithSuffix === 'boolean') {\n\t withSuffix = argWithSuffix;\n\t }\n\t if (typeof argThresholds === 'object') {\n\t th = Object.assign({}, thresholds, argThresholds);\n\t if (argThresholds.s != null && argThresholds.ss == null) {\n\t th.ss = argThresholds.s - 1;\n\t }\n\t }\n\n\t locale = this.localeData();\n\t output = relativeTime$1(this, !withSuffix, th, locale);\n\n\t if (withSuffix) {\n\t output = locale.pastFuture(+this, output);\n\t }\n\n\t return locale.postformat(output);\n\t }\n\n\t var abs$1 = Math.abs;\n\n\t function sign(x) {\n\t return (x > 0) - (x < 0) || +x;\n\t }\n\n\t function toISOString$1() {\n\t // for ISO strings we do not use the normal bubbling rules:\n\t // * milliseconds bubble up until they become hours\n\t // * days do not bubble at all\n\t // * months bubble up until they become years\n\t // This is because there is no context-free conversion between hours and days\n\t // (think of clock changes)\n\t // and also not between days and months (28-31 days per month)\n\t if (!this.isValid()) {\n\t return this.localeData().invalidDate();\n\t }\n\n\t var seconds = abs$1(this._milliseconds) / 1000,\n\t days = abs$1(this._days),\n\t months = abs$1(this._months),\n\t minutes,\n\t hours,\n\t years,\n\t s,\n\t total = this.asSeconds(),\n\t totalSign,\n\t ymSign,\n\t daysSign,\n\t hmsSign;\n\n\t if (!total) {\n\t // this is the same as C#'s (Noda) and python (isodate)...\n\t // but not other JS (goog.date)\n\t return 'P0D';\n\t }\n\n\t // 3600 seconds -> 60 minutes -> 1 hour\n\t minutes = absFloor(seconds / 60);\n\t hours = absFloor(minutes / 60);\n\t seconds %= 60;\n\t minutes %= 60;\n\n\t // 12 months -> 1 year\n\t years = absFloor(months / 12);\n\t months %= 12;\n\n\t // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n\t s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n\t totalSign = total < 0 ? '-' : '';\n\t ymSign = sign(this._months) !== sign(total) ? '-' : '';\n\t daysSign = sign(this._days) !== sign(total) ? '-' : '';\n\t hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n\t return (\n\t totalSign +\n\t 'P' +\n\t (years ? ymSign + years + 'Y' : '') +\n\t (months ? ymSign + months + 'M' : '') +\n\t (days ? daysSign + days + 'D' : '') +\n\t (hours || minutes || seconds ? 'T' : '') +\n\t (hours ? hmsSign + hours + 'H' : '') +\n\t (minutes ? hmsSign + minutes + 'M' : '') +\n\t (seconds ? hmsSign + s + 'S' : '')\n\t );\n\t }\n\n\t var proto$2 = Duration.prototype;\n\n\t proto$2.isValid = isValid$1;\n\t proto$2.abs = abs;\n\t proto$2.add = add$1;\n\t proto$2.subtract = subtract$1;\n\t proto$2.as = as;\n\t proto$2.asMilliseconds = asMilliseconds;\n\t proto$2.asSeconds = asSeconds;\n\t proto$2.asMinutes = asMinutes;\n\t proto$2.asHours = asHours;\n\t proto$2.asDays = asDays;\n\t proto$2.asWeeks = asWeeks;\n\t proto$2.asMonths = asMonths;\n\t proto$2.asQuarters = asQuarters;\n\t proto$2.asYears = asYears;\n\t proto$2.valueOf = valueOf$1;\n\t proto$2._bubble = bubble;\n\t proto$2.clone = clone$1;\n\t proto$2.get = get$2;\n\t proto$2.milliseconds = milliseconds;\n\t proto$2.seconds = seconds;\n\t proto$2.minutes = minutes;\n\t proto$2.hours = hours;\n\t proto$2.days = days;\n\t proto$2.weeks = weeks;\n\t proto$2.months = months;\n\t proto$2.years = years;\n\t proto$2.humanize = humanize;\n\t proto$2.toISOString = toISOString$1;\n\t proto$2.toString = toISOString$1;\n\t proto$2.toJSON = toISOString$1;\n\t proto$2.locale = locale;\n\t proto$2.localeData = localeData;\n\n\t proto$2.toIsoString = deprecate(\n\t 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n\t toISOString$1\n\t );\n\t proto$2.lang = lang;\n\n\t // FORMATTING\n\n\t addFormatToken('X', 0, 0, 'unix');\n\t addFormatToken('x', 0, 0, 'valueOf');\n\n\t // PARSING\n\n\t addRegexToken('x', matchSigned);\n\t addRegexToken('X', matchTimestamp);\n\t addParseToken('X', function (input, array, config) {\n\t config._d = new Date(parseFloat(input) * 1000);\n\t });\n\t addParseToken('x', function (input, array, config) {\n\t config._d = new Date(toInt(input));\n\t });\n\n\t //! moment.js\n\n\t hooks.version = '2.30.1';\n\n\t setHookCallback(createLocal);\n\n\t hooks.fn = proto;\n\t hooks.min = min;\n\t hooks.max = max;\n\t hooks.now = now;\n\t hooks.utc = createUTC;\n\t hooks.unix = createUnix;\n\t hooks.months = listMonths;\n\t hooks.isDate = isDate;\n\t hooks.locale = getSetGlobalLocale;\n\t hooks.invalid = createInvalid;\n\t hooks.duration = createDuration;\n\t hooks.isMoment = isMoment;\n\t hooks.weekdays = listWeekdays;\n\t hooks.parseZone = createInZone;\n\t hooks.localeData = getLocale;\n\t hooks.isDuration = isDuration;\n\t hooks.monthsShort = listMonthsShort;\n\t hooks.weekdaysMin = listWeekdaysMin;\n\t hooks.defineLocale = defineLocale;\n\t hooks.updateLocale = updateLocale;\n\t hooks.locales = listLocales;\n\t hooks.weekdaysShort = listWeekdaysShort;\n\t hooks.normalizeUnits = normalizeUnits;\n\t hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n\t hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n\t hooks.calendarFormat = getCalendarFormat;\n\t hooks.prototype = proto;\n\n\t // currently HTML5 input type only supports 24-hour formats\n\t hooks.HTML5_FMT = {\n\t DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n\t DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n\t DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n\t DATE: 'YYYY-MM-DD', // \n\t TIME: 'HH:mm', // \n\t TIME_SECONDS: 'HH:mm:ss', // \n\t TIME_MS: 'HH:mm:ss.SSS', // \n\t WEEK: 'GGGG-[W]WW', // \n\t MONTH: 'YYYY-MM', // \n\t };\n\n\t return hooks;\n\n\t}))); \n} (moment$1));\n\nvar momentExports = moment$1.exports;\nvar moment = /*@__PURE__*/getDefaultExportFromCjs(momentExports);\n\n// noinspection JSUnusedGlobalSymbols\nconst documentResultsIteratorToList = async (documentIterator) => {\n const documents = [];\n for await (const document of documentIterator) {\n documents.push(document);\n }\n return documents;\n};\nconst filterDocumentsByUniquePage = (documents) => {\n const uniqueDocuments = new Map();\n documents.forEach((document) => {\n if (!uniqueDocuments.has(document.document.originalId)) {\n uniqueDocuments.set(document.document.originalId, document);\n }\n });\n return Array.from(uniqueDocuments.values());\n};\nconst formatDate = (dateString) => {\n if (!dateString)\n return;\n return moment(new Date(dateString)).format(\"DD.MM.YYYY\");\n};\n\nconst fetchLLMRequest = async (searchTerm, country, language) => {\n try {\n const llmResponse = await fetch('https://2po-ai-dgp-search-prod-functions.azurewebsites.net/api/llm-generation-function', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n question: searchTerm,\n country: country,\n language: language,\n }),\n });\n if (llmResponse.ok) {\n const llmData = await llmResponse.json();\n if (llmData.hasResult) {\n return llmData.response;\n }\n else {\n return false;\n }\n }\n }\n catch {\n console.error(\"Error fetching LLM\");\n return false;\n }\n};\n\nvar Blog = \"6efbe40db4d133a2.svg\";\n\nvar FAQ = \"b7f061d981b9594c.svg\";\n\nvar File = \"a92465893e26ba0c.svg\";\n\nvar Globe = \"3eb89c6c5ad07860.svg\";\n\nvar Default = \"861764818d68f74a.svg\";\n\nconst ResultLineContainer = styled.div `\n display: flex;\n padding: 1rem 0rem;\n width: 100%;\n`;\nconst ResultImageContainer = styled.div `\n width: 60px;\n height: 45px;\n overflow: hidden;\n justify-content: center;\n text-align: center;\n display: flex;\n border-radius: 4px;\n background-color: #f5f5f5;\n\n @media (min-width: 600px) {\n width: 120px;\n height: 90px;\n }\n`;\nconst ResultImage = styled.img `\n width: auto;\n height: 100%;\n`;\nconst ResultIcon = styled.img `\n width: 1.5rem;\n`;\nconst ResultContentContainer = styled.div `\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n color: #123269;\n transition: 0.12s background-color ease-out;\n padding-left: 1rem;\n width: calc(100% - 60px - 1rem);\n\n @media (min-width: 600px) {\n width: calc(100% - 120px - 1rem);\n }\n`;\nstyled.div `\n text-transform: uppercase;\n font-size: 0.75rem;\n font-weight: 900;\n`;\nconst ResultTitle = styled.p `\n font-weight: 300;\n margin-top: 0;\n margin-bottom: 0;\n`;\nconst ResultText = styled.p `\n margin: 0;\n`;\nconst ResultInfo = styled.div `\n font-size: 0.75rem;\n color: #6d83a4;\n`;\nconst ResultBlock = ({ result, platform = ['onesite'], LinkComponent, highlight }) => {\n const textRef = useRef(null);\n const escapeRegExp = (string) => {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n };\n const replaceAll = (str, find, replace) => {\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n };\n const getIconForDocument = (document) => {\n if (document.type === 'blog') {\n return Blog;\n }\n else if (document.type === 'faq') {\n return FAQ;\n }\n else if (document.type === 'file') {\n return File;\n }\n else if (document.type === 'page') {\n return Globe;\n }\n return Default;\n };\n useEffect(() => {\n if (textRef.current && highlight && result.highlights?.contentPart?.[0]) {\n const textToDisplay = replaceAll(result.highlights?.contentPart?.[0], '', '');\n textRef.current.innerHTML = textToDisplay;\n }\n else if (textRef.current) {\n textRef.current.innerHTML = \"\";\n }\n }, [textRef, highlight, result.highlights]);\n return (React.createElement(Link, { href: result?.document.location, target: result?.document?.availableOnPlatforms?.indexOf(platform) !== -1 ? '_self' : '_blank', rel: \"test\", LinkComponent: LinkComponent },\n React.createElement(ResultLineContainer, null,\n React.createElement(ResultImageContainer, null, result.document.imageUrl ? (React.createElement(ResultImage, { src: result.document.imageUrl, alt: result.document.title })) : (React.createElement(ResultIcon, { src: getIconForDocument(result.document), alt: result.document.title }))),\n React.createElement(ResultContentContainer, null,\n React.createElement(ResultTitle, null, result.document.title),\n highlight && React.createElement(ResultText, { ref: textRef }),\n React.createElement(ResultInfo, null, result.document.updatedAt ? formatDate(result.document.updatedAt) : '')))));\n};\n\nconst PaginationWrapperStyle = styled.div `\n display: flex;\n gap: 1rem;\n justify-content: center;\n align-items: center;\n margin-top: 1rem;\n`;\nconst PaginationItem = styled.span `\n cursor: pointer;\n color: #cccccd;\n padding: 0.5rem;\n border-radius: 2px;\n width: 1.5rem;\n height: 1.5rem;\n display: flex;\n justify-content: center;\n align-items: center;\n transition: all 0.02s linear;\n border-bottom: .1em solid #ffffff;\n\n &:hover {\n color: #40547d;\n }\n`;\nconst ResultDivider$1 = styled.div `\n border-top: 1px solid #d1d1d1;\n margin: 2rem 0;\n`;\nconst SVG = styled.svg `\n fill: #707070;\n height: 1rem;\n min-width: 1rem;\n width: 1rem;\n`;\nconst LEFTSVG = styled.svg `\n height: 1rem;\n min-width: 1rem;\n width: 1rem;\n transform: rotate(180deg);\n fill: #707070;\n`;\nconst PaginationWrapper = ({ nextPage, previousPage, children, currentPage, totalPages }) => {\n return (React.createElement(React.Fragment, null,\n React.createElement(ResultDivider$1, null),\n React.createElement(PaginationWrapperStyle, null,\n React.createElement(PaginationItem, null,\n React.createElement(\"div\", { onClick: () => previousPage() },\n React.createElement(LEFTSVG, { style: currentPage === 1 ? { fill: '#e3e3e3' } : undefined, viewBox: \"0 0 34 34\", preserveAspectRatio: \"xMidYMid meet\" },\n React.createElement(\"path\", { d: \"M18.38,31.69l-2.93-2.93,9.68-9.69H.93V14.93h24.2L15.45,5.24l2.93-2.93L33.07,17Z\" })))),\n children,\n React.createElement(PaginationItem, null,\n React.createElement(\"div\", { onClick: () => nextPage() },\n React.createElement(SVG, { style: currentPage === totalPages ? { fill: '#e3e3e3' } : undefined, viewBox: \"0 0 34 34\", preserveAspectRatio: \"xMidYMid meet\" },\n React.createElement(\"path\", { d: \"M18.38,31.69l-2.93-2.93,9.68-9.69H.93V14.93h24.2L15.45,5.24l2.93-2.93L33.07,17Z\" })))))));\n};\nconst Pagination = ({ currentPage, goToPage, totalPages, ...rest }) => {\n if (totalPages <= 1) {\n return null;\n }\n const isFirstPage = currentPage === 1;\n const isLastPage = currentPage === totalPages;\n const hasMoreThan3Pages = totalPages >= 3;\n if (hasMoreThan3Pages) {\n if (isFirstPage) {\n return (React.createElement(PaginationWrapper, { currentPage: currentPage, totalPages: totalPages, goToPage: goToPage, ...rest },\n React.createElement(React.Fragment, null,\n React.createElement(PaginationItem, { style: { color: '#40547d', borderBottom: '.1em solid #40547d' }, onClick: () => goToPage(currentPage) }, currentPage),\n React.createElement(PaginationItem, { onClick: () => goToPage(currentPage + 1) }, currentPage + 1),\n React.createElement(PaginationItem, { onClick: () => goToPage(currentPage + 2) }, currentPage + 2))));\n }\n else if (isLastPage) {\n return (React.createElement(PaginationWrapper, { currentPage: currentPage, totalPages: totalPages, goToPage: goToPage, ...rest },\n React.createElement(React.Fragment, null,\n React.createElement(PaginationItem, { onClick: () => goToPage(currentPage - 2) }, currentPage - 2),\n React.createElement(PaginationItem, { onClick: () => goToPage(currentPage - 1) }, currentPage - 1),\n React.createElement(PaginationItem, { style: { color: '#40547d', borderBottom: '.1em solid #40547d' }, onClick: () => goToPage(currentPage) }, currentPage))));\n }\n return (React.createElement(PaginationWrapper, { currentPage: currentPage, totalPages: totalPages, goToPage: goToPage, ...rest },\n React.createElement(React.Fragment, null,\n React.createElement(PaginationItem, { onClick: () => goToPage(currentPage - 1) }, currentPage - 1),\n React.createElement(PaginationItem, { style: { color: '#40547d', borderBottom: '.1em solid #40547d' }, onClick: () => goToPage(currentPage) }, currentPage),\n React.createElement(PaginationItem, { onClick: () => goToPage(currentPage + 1) }, currentPage + 1))));\n }\n return (React.createElement(PaginationWrapper, { currentPage: currentPage, totalPages: totalPages, goToPage: goToPage, ...rest },\n React.createElement(React.Fragment, null, [...Array(totalPages)].map((page, index) => {\n const p = index + 1;\n return (React.createElement(PaginationItem, { key: page ?? index, style: currentPage === p ? { color: '#40547d', borderBottom: '.1em solid #40547d' } : {}, onClick: () => goToPage(p) }, p));\n }))));\n};\n\nconst useSearch = (searchTerm, country, language, platform, credentials, fetchLLM, highlight, minimumScore, enableLocalStorage, vector) => {\n const [results, setResults] = useState();\n const [isResultsLoading, setIsLoading] = useState(false);\n const [suggestions, setSuggestions] = useState();\n const [isSuggestionsLoading, setSuggestionLoading] = useState(false);\n const [isLlmLoading, setLlmLoading] = useState(false);\n const [fetchError, setFetchError] = useState(false);\n const [llm, setLlm] = useState();\n const localStorageItem = enableLocalStorage ? typeof localStorage !== 'undefined' ? localStorage.getItem('minimumScore') : false : false;\n let MINIMUM_SCORE = 1.35;\n if (localStorageItem) {\n MINIMUM_SCORE = Number(localStorageItem);\n }\n else if (minimumScore) {\n MINIMUM_SCORE = minimumScore;\n }\n useEffect(() => {\n const fetchResults = async () => {\n setIsLoading(true);\n setSuggestionLoading(true);\n setLlmLoading(true);\n setFetchError(false);\n if (searchTerm.length > 3) {\n try {\n let options = {\n question: searchTerm,\n country: country,\n language: language,\n platforms: platform,\n includeNonSearch: false,\n top: 75,\n };\n if (highlight) {\n options = {\n ...options,\n highlight: 'contentPart',\n highlightPreTag: '',\n highlightPostTag: '',\n };\n }\n const searchResults = await search(language, options, credentials, vector);\n const documents = await documentResultsIteratorToList(searchResults.results);\n const suggestions = new Set(documents.map((document) => document.document.suggestedQuestions).flat());\n const filteredDocumentsByUnique = filterDocumentsByUniquePage(documents);\n const filteredDocumentsByMinimumScore = filteredDocumentsByUnique.filter((document) => document?.rerankerScore && document.rerankerScore > MINIMUM_SCORE);\n // Currently we will filter out FAQ's from the results\n const filteredDocumentsWithoutFAQ = filteredDocumentsByMinimumScore.filter((document) => document.document.type !== 'faq');\n setResults(filteredDocumentsWithoutFAQ);\n setSuggestions(Array.from(suggestions).slice(0, 5));\n setIsLoading(false);\n if (fetchLLM) {\n const llm = await fetchLLMRequest(searchTerm, country, language);\n if (llm) {\n setLlm(llm);\n }\n setLlmLoading(false);\n }\n }\n catch (e) {\n console.error('there has been an error', e);\n setFetchError(true);\n setIsLoading(false);\n }\n setSuggestionLoading(false);\n }\n else {\n setResults(null);\n setSuggestions(null);\n setIsLoading(false);\n setSuggestionLoading(false);\n }\n };\n fetchResults();\n }, [searchTerm]);\n return { results, suggestions, isResultsLoading, isSuggestionsLoading, isLlmLoading, fetchError, llm };\n};\n\nconst usePagination = (results, scrollRef, activeFilter) => {\n const [initialPage] = useState(1);\n const [totalPages, setTotalPages] = useState(1);\n const [currentPage, setCurrentPage] = useState(initialPage);\n const [resultsToShow, setResultsToShow] = useState([]);\n const MAX_PAGE_SIZE = 10;\n const calculateTotalPages = () => {\n setTotalPages(Math.ceil(results.length / MAX_PAGE_SIZE));\n };\n const skipAndTakeResults = () => {\n const skip = (currentPage - 1) * MAX_PAGE_SIZE;\n const take = MAX_PAGE_SIZE;\n setResultsToShow(results.slice(skip, skip + take));\n };\n useEffect(() => {\n if (results) {\n calculateTotalPages();\n skipAndTakeResults();\n }\n }, [results]);\n useEffect(() => {\n if (activeFilter) {\n setCurrentPage(1);\n }\n }, [activeFilter]);\n useEffect(() => {\n if (results) {\n skipAndTakeResults();\n }\n }, [results, currentPage]);\n const goToPage = (page) => {\n if (page >= 1 && page <= totalPages) {\n setCurrentPage(page);\n scrollRef?.current?.scrollIntoView({ behavior: 'smooth' });\n }\n };\n const nextPage = () => {\n if (currentPage < totalPages) {\n goToPage(currentPage + 1);\n }\n };\n const previousPage = () => {\n if (currentPage > 1) {\n goToPage(currentPage - 1);\n }\n };\n return {\n currentPage,\n totalPages,\n goToPage,\n nextPage,\n previousPage,\n resultsToShow,\n };\n};\n\nconst SearchComponent = styled.div `\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 9999;\n padding: 1rem;\n overflow: auto;\n font-family: Roboto, DGP, sans-serif;\n`;\nconst BackDrop = styled.div `\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: -1;\n backdrop-filter: blur(2px);\n background-color: #ffffff;\n @media (min-width: 600px) {\n background-color: rgba(18, 50, 105, 0.4);\n }\n`;\nconst InputContainer = styled.div `\n position: absolute;\n height: 3.5rem;\n width: 100vw;\n left: 0;\n top: 0;\n\n @media (min-width: 600px) {\n left: 50%;\n width: 50vw;\n transform: translateX(-50%);\n top: 1rem;\n height: auto;\n\n &:hover {\n background: yellow;\n }\n }\n`;\nconst ErrorMessage$1 = styled.div `\n position: absolute;\n top: calc(100% - 0.5rem);\n left: 0;\n z-index: 9999;\n background-color: #ed0202;\n color: #ffffff;\n right: 0;\n padding: 0.5rem 1rem;\n display: flex;\n gap: 1.25rem;\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`;\nconst DgpAISearchComponent = ({ showSearch, onCloseSearch, className, country = 'BE', language = 'nl', platform = ['onesite'], translations, LinkComponent, options, searchUrl, }) => {\n const [searchTerm, setSearchTerm] = useDebounceValue('', 200);\n const [openResults, setOpenResults] = useDebounceValue(false, 400);\n const { results, suggestions, isResultsLoading, isSuggestionsLoading, fetchError } = useSearch(searchTerm, country, language, platform, options.credentials, false, false, options.minimumScore, options.enableLocalStorage, options.vector);\n const isMobile = useMediaQuery('(max-width: 600px)');\n const handleSearch = (event) => {\n setSearchTerm(event.target.value);\n setOpenResults(true);\n };\n useEffect(() => {\n setOpenResults((isResultsLoading && searchTerm.length > 3) || (!isResultsLoading && results?.length > 0));\n }, [searchTerm, isResultsLoading, results]);\n const closingBehaviorHandler = () => {\n if (!isMobile && onCloseSearch !== undefined) {\n setSearchTerm('');\n onCloseSearch();\n }\n };\n if (!showSearch) {\n return null;\n }\n return (React.createElement(SearchComponent, { className: className },\n React.createElement(BackDrop, { onClick: () => closingBehaviorHandler() }),\n React.createElement(InputContainer, null,\n React.createElement(SearchBox, { searchTerm: searchTerm, onChange: handleSearch, onClose: () => {\n setSearchTerm('');\n onCloseSearch?.();\n }, resetSearch: () => {\n setSearchTerm('');\n setOpenResults(false);\n }, translations: translations, search: (searchTerm) => window.open(`${searchUrl}${searchTerm}`, '_self') }),\n fetchError && (React.createElement(ErrorMessage$1, null,\n React.createElement(FontAwesomeIcon, { icon: faExclamationCircle }),\n translations?.errorMessage ?? 'There has been an error')),\n openResults && (React.createElement(SearchResults, { searchResults: results, suggestions: suggestions, suggestionsLoading: isSuggestionsLoading, resultsLoading: isResultsLoading, platform: platform, translations: translations, LinkComponent: LinkComponent, searchUrl: searchUrl })))));\n};\n\nconst PagedResultsContainer = styled.div `\n font-family: DGP, sans-serif;\n`;\nconst SearchTitle = styled.h2 `\n margin-bottom: 0;\n margin-top: 0;\n color: #123269;\n font-size: 2.1rem;\n`;\nconst SearchSubtitle = styled.p `\n margin-bottom: 1rem;\n color: #6d83a4;\n text-transform: uppercase;\n width: fit-content;\n font-size: 0.75rem;\n position: relative;\n cursor: help;\n\n @media (min-width: 600px) {\n &:hover > div {\n visibility: visible;\n opacity: 1;\n transition-delay: 200ms;\n }\n }\n`;\nconst TooltipContent = styled.div `\n visibility: ${props => props.isVisible ? 'visible' : 'hidden'};\n opacity: ${props => props.isVisible ? '1' : '0'};\n position: absolute;\n overflow: hidden;\n z-index: 1;\n bottom: -601%;\n left: 85%;\n transform: translateX(-50%);\n padding: 8px 12px;\n background-color: #eef0f5;\n color: #6d83a4;\n border-radius: 4px;\n width: max-content;\n max-width: 300px;\n transition: opacity 0.2s ease-in-out, visibility 0.2s ease-in-out;\n transition-delay: 0s;\n font-size: 0.75rem;\n font-family: DGP, sans-serif;\n text-transform: none;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n \n &::after {\n content: \"\";\n position: absolute;\n top: 100%;\n left: 50%;\n margin-left: -5px;\n border-width: 5px;\n border-style: solid;\n border-color: #eef0f5 transparent transparent transparent;\n }\n\n @media (max-width: 599px) {\n transition-delay: 0s !important;\n }\n`;\nconst GeneratedAnswer = styled.div `\n margin-bottom: 2rem;\n`;\nconst ErrorMessage = styled.div `\n position: absolute;\n top: calc(100% - 0.5rem);\n left: 0;\n z-index: 9999;\n background-color: #ed0202;\n color: #ffffff;\n right: 0;\n padding: 0.5rem 1rem;\n display: flex;\n gap: 1.25rem;\n border-bottom-left-radius: 3px;\n border-bottom-right-radius: 3px;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`;\nconst SkeletonWrapper = styled.div `\n display: flex;\n flex-direction: column;\n gap: 1rem;\n margin: 2rem 0;\n`;\nconst CitationWrapper = styled.div `\n display: flex;\n flex-direction: column;\n gap: 1rem;\n`;\nconst CitationResultsWrapper = styled.div `\n display: flex;\n flex-direction: column;\n gap: 1rem;\n flex-wrap: wrap;\n\n @media (min-width: 600px) {\n flex-direction: row;\n gap: 1rem;\n }\n`;\nconst Citation = styled.div `\n background-color: #eef0f5;\n padding: 1rem;\n width: 100%;\n transition: all 0.2s linear;\n\n @media (min-width: 600px) {\n width: auto;\n }\n\n &:hover {\n background-color: #f4f6fa;\n }\n`;\nconst CitationBlockWrapper = styled.div `\n width: 100%;\n\n @media (min-width: 600px) {\n width: calc(50% - (1rem / 2));\n }\n\n @media (min-width: 968px) {\n width: calc(33.33% - (2rem / 3));\n }\n\n @media (min-width: 1200px) {\n width: calc(25% - (3rem / 4));\n }\n`;\nconst CitationBlockTitle = styled.p `\n color: #123269;\n font-weight: 300;\n margin-bottom: 0.125rem;\n font-size: 1rem;\n margin-top: 0;\n`;\nconst CitationBlockDate = styled.p `\n color: #6d83a4;\n font-size: 0.75rem;\n margin-bottom: 0;\n margin-top: 0;\n`;\nconst CitationTitle = styled.p `\n text-transform: uppercase;\n font-size: 0.75rem;\n color: #6d83a4;\n margin-bottom: 0;\n`;\nconst ResultCountContainer = styled.p `\n margin-top: 2rem;\n font-size: 0.75rem;\n color: #6d83a4;\n text-transform: uppercase;\n`;\nconst ResultDivider = styled.div `\n border-top: 1px solid #d1d1d1;\n margin: 2rem 0;\n`;\nconst FilterWrapper = styled.div `\n position: relative;\n`;\nconst FilterContainer = styled.div `\n display: flex;\n gap: 0.5rem;\n margin-top: 1rem;\n overflow-x: scroll;\n scroll-behavior: smooth;\n scrollbar-width: none;\n`;\nconst FilterButton = styled.button `\n background-color: transparent;\n border: none;\n padding-bottom: 0.5rem;\n color: #123269;\n border-bottom: 2px solid transparent;\n cursor: pointer;\n text-transform: capitalize;\n white-space: normal;\n font-family: var(--font-family-sans-serif);\n`;\nconst SearchResetButton = styled.button `\n background-color: transparent;\n border: none;\n cursor: pointer;\n color: #6d83a4;\n text-decoration: underline;\n`;\nconst TitleContainer = styled.div `\n display: flex;\n align-items: center;\n margin-bottom: 1.5rem;\n flex-wrap: wrap;\n\n @media (min-width: 600px) {\n gap: 1rem;\n }\n`;\nconst ScrollButton = styled.div `\n position: absolute;\n right: 0;\n bottom: 0;\n height: 100%;\n background-color: #f4f6fa;\n padding: 0.25rem 0.5rem;\n opacity: 0.8;\n display: flex;\n align-items: center;\n color: #3f957a;\n`;\nconst ArrowIcon = styled.svg `\n width: 1rem;\n height: 1rem;\n display: inline-block;\n outline: none;\n fill: #3f957a;\n`;\nconst PagedResults = ({ searchQuery = '', platform = ['onesite'], country = 'BE', language = 'en', translations, options, isInputSearch, LinkComponent, searchUrl, }) => {\n const [activeFilters, setActiveFilters] = useState('');\n const [allFilters, setAllFilters] = useState([]);\n const [hasToSearchOnLlm] = useState(searchQuery?.split(' ')?.length >= 3);\n const [searchIsOpen, setSearchIsOpen] = useState(false);\n const [scrollable, setScrollable] = useState(false);\n const wrapperRef = useRef(null);\n const isMobile = useMediaQuery('(max-width: 600px)');\n const [tooltipVisible, setTooltipVisible] = useState(false);\n const { results, isResultsLoading, fetchError, llm, isLlmLoading } = useSearch(searchQuery, country, language, platform, options.credentials, hasToSearchOnLlm, !hasToSearchOnLlm, options.minimumScore, options.enableLocalStorage, options.vector);\n const [filteredResults, setFilteredResults] = useState(results);\n const toggleSearch = () => {\n setSearchIsOpen(!searchIsOpen);\n };\n useEffect(() => {\n if (results) {\n const getOccurrence = (array, value) => array.filter((v) => v === value).length;\n setFilteredResults([]);\n const allDocumentTypes = results?.map((result) => result.document.type);\n const uniqueDocumentTypes = allDocumentTypes?.filter((v, i, a) => a.indexOf(v) === i);\n const filters = [];\n uniqueDocumentTypes?.forEach((documentType) => {\n filters.push({\n key: documentType,\n count: getOccurrence(allDocumentTypes, documentType),\n });\n });\n setAllFilters(filters);\n setFilteredResults(results?.filter((result) => {\n return activeFilters === '' || result.document.type === activeFilters;\n }));\n }\n }, [results, activeFilters]);\n const scrollRef = React.createRef();\n const { currentPage, totalPages, goToPage, nextPage, previousPage, resultsToShow } = usePagination(filteredResults, scrollRef, activeFilters);\n const llmRef = useRef(null);\n const showTitle = (title) => {\n return isInputSearch ? `\"${title}\"` : title;\n };\n useEffect(() => {\n if (llmRef.current && llm && llm.answer && !isLlmLoading) {\n llmRef.current.innerHTML = llm.answer;\n }\n }, [llmRef, llm, isLlmLoading]);\n const getWindowWidth = () => {\n if (window)\n return window.innerWidth;\n else\n return 0;\n };\n const filterScrollable = () => {\n const windowWidth = getWindowWidth();\n if (wrapperRef.current) {\n return setScrollable(wrapperRef.current.scrollWidth > (windowWidth * 0.9));\n }\n return setScrollable(false);\n };\n const handleScroll = () => {\n if (wrapperRef.current) {\n const newScrollLeft = wrapperRef.current.scrollLeft + wrapperRef.current.offsetWidth;\n if (newScrollLeft > wrapperRef.current.scrollWidth)\n wrapperRef.current.scrollLeft = wrapperRef.current.scrollWidth;\n else\n wrapperRef.current.scrollLeft = newScrollLeft;\n }\n };\n useEffect(() => {\n filterScrollable();\n window.addEventListener(\"resize\", filteredResults);\n return () => window.removeEventListener(\"resize\", filteredResults);\n });\n const handleTooltipClick = (e) => {\n if (isMobile) {\n e.preventDefault();\n e.stopPropagation();\n setTooltipVisible(!tooltipVisible);\n }\n };\n useEffect(() => {\n if (!isMobile) {\n setTooltipVisible(false);\n }\n }, [isMobile]);\n return (React.createElement(PagedResultsContainer, { ref: scrollRef },\n React.createElement(DgpAISearchComponent, { showSearch: searchIsOpen, onCloseSearch: toggleSearch, country: country, language: language, platform: platform, LinkComponent: LinkComponent, translations: translations, options: options, searchUrl: searchUrl }),\n searchQuery && (React.createElement(TitleContainer, null,\n React.createElement(SearchTitle, null, showTitle(searchQuery)),\n isInputSearch && React.createElement(SearchResetButton, { onClick: () => toggleSearch() }, translations?.resetSearch ?? \"Reset search\"))),\n ((isLlmLoading && hasToSearchOnLlm) || !window) && (React.createElement(SkeletonWrapper, null,\n React.createElement(Skeleton, null))),\n llm && !isLlmLoading && (React.createElement(React.Fragment, null,\n React.createElement(GeneratedAnswer, null,\n React.createElement(SearchSubtitle, { onClick: handleTooltipClick },\n React.createElement(FontAwesomeIcon, { icon: faStar }),\n \" \",\n translations?.generatedAnswer ?? 'Generated Answer',\n React.createElement(TooltipContent, { isVisible: isMobile ? tooltipVisible : undefined }, translations?.answerDisclaimer ?? 'This AI-powered search engine only retrieves content published on this website. While we aim for accuracy, please verify information independently and contact us specific advice.')),\n React.createElement(\"div\", { ref: llmRef })),\n React.createElement(CitationWrapper, null, llm.citations && llm.citations.length > 0 && (React.createElement(React.Fragment, null,\n React.createElement(CitationTitle, null, translations?.citationTitle ?? 'Source information'),\n React.createElement(CitationResultsWrapper, null, llm.citations?.map((citation, index) => {\n return (React.createElement(CitationBlockWrapper, { key: index },\n React.createElement(Link, { LinkComponent: LinkComponent, key: index, href: citation.url },\n React.createElement(Citation, null,\n React.createElement(CitationBlockTitle, null, citation.title ?? citation.url),\n React.createElement(CitationBlockDate, null, citation.lastModified ? formatDate(citation.lastModified) : null)))));\n }))))),\n React.createElement(ResultDivider, null))),\n fetchError ? (React.createElement(React.Fragment, null,\n React.createElement(ErrorMessage, null,\n React.createElement(FontAwesomeIcon, { icon: faExclamationCircle }),\n translations?.errorMessage ?? 'There has been an error'))) : (React.createElement(React.Fragment, null, isResultsLoading ? (React.createElement(React.Fragment, null,\n React.createElement(ResultDivider, null),\n React.createElement(SkeletonWrapper, null,\n React.createElement(Skeleton, null)))) : (React.createElement(\"div\", { id: \"results-container\" },\n resultsToShow?.length !== 0 ? (React.createElement(ResultCountContainer, null,\n filteredResults?.length,\n \" \",\n translations?.chapters.results ?? 'results')) : (React.createElement(\"p\", null, translations?.noResults ??\n 'Something went wrong when searching. Make sure you pass a searchterm.')),\n allFilters.length > 0 && (React.createElement(FilterWrapper, null,\n React.createElement(FilterContainer, { ref: wrapperRef },\n React.createElement(FilterButton, { style: activeFilters === '' ? { borderBottom: '2px solid #123269' } : {}, onClick: () => setActiveFilters('') },\n React.createElement(\"div\", null, translations?.allResults ?? 'All')),\n allFilters.map((filter, index) => {\n return (React.createElement(FilterButton, { style: activeFilters === filter.key ? { borderBottom: '2px solid #123269' } : {}, key: index, onClick: () => setActiveFilters(filter.key) },\n React.createElement(\"div\", null,\n filter.key,\n \"\\u00A0(\",\n filter.count,\n \")\")));\n }),\n (isMobile && scrollable) && (React.createElement(ScrollButton, { onClick: () => handleScroll() },\n React.createElement(ArrowIcon, { viewBox: \"0 0 34 34\", preserveAspectRatio: \"xMidYMid meet\" },\n React.createElement(\"path\", { d: \"M18.38,31.69l-2.93-2.93,9.68-9.69H.93V14.93h24.2L15.45,5.24l2.93-2.93L33.07,17Z\" }))))))),\n resultsToShow?.map((result, index) => {\n return (React.createElement(ResultBlock, { key: index, result: result, platform: platform, LinkComponent: LinkComponent, highlight: !hasToSearchOnLlm }));\n }),\n React.createElement(Pagination, { currentPage: currentPage, goToPage: goToPage, nextPage: nextPage, previousPage: previousPage, totalPages: totalPages })))))));\n};\n\nexport { DgpAISearchComponent, Link, PagedResults, Pagination, ResultBlock, ResultLine, SearchBox, SearchResults };\n//# sourceMappingURL=dgp-ai-search-component.esm.js.map\n"],"names":["ResultLineLink","a","Link","href","children","target","rel","LinkComponent","commonjsGlobal","globalThis","window","global","self","getDefaultExportFromCjs","x","__esModule","Object","prototype","hasOwnProperty","call","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","freeGlobal","freeSelf","root","Function","objectToString","toString","nativeMax","Math","max","nativeMin","min","now","Date","isObject$1","value","type","toNumber","isObjectLike","isSymbol","other","valueOf","replace","isBinary","test","slice","lodash_debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","debounce$1","useIsomorphicLayoutEffect","useLayoutEffect","useEffect","IS_SERVER2","useMediaQuery","query","defaultValue","initializeWithValue","getMatches","query2","matchMedia","matches","setMatches","useState","handleChange","addListener","addEventListener","removeListener","removeEventListener","useDebounceCallback","delay","debouncedFunc","useRef","funcRef","current","useUnmount","useMemo","debouncedFuncInstance","wrappedFunc","isPending","useDebounceValue","initialValue","unwrappedInitialValue","debouncedValue","setDebouncedValue","previousValueRef","updateDebouncedValue","ResultLineContainer$1","div","ResultLineLinkContainer","span","ResultText$1","ResultIcon$1","ResultPrefixIcon","ResultLine","variant","selected","platform","searchUrl","documentIconMapping","page","blog","iconMapping","suggestion","isMobile","style","backgroundColor","document","location","availableOnPlatforms","some","item","includes","icon","title","getIconByVariant","pulse","SkeletonStyle","SkeletonLargeStyle","Skeleton","SearchResultsContainer","SearchResultScrollContainer","SearchResultHeaders","h4","ResultsContainer","SearchResults","suggestions","searchResults","suggestionsLoading","resultsLoading","translations","focusedIndex","setFocusedIndex","shortenedItems","mapOfAllItems","getIndexOfAllItems","indexOf","showSuggestions","length","tabIndex","onKeyDown","e","key","nextCount","preventDefault","chapters","map","results","searchResult","InputContainer$1","InputIcon","Input","input","CancelButton","button","CrossIconLeft","CrossIconRight","SearchBox","searchTerm","onChange","onClose","resetSearch","search","inputRef","debouncedSearchTerm","setDebouncedSearchTerm","timer","eventName","dataLayer","push","event","timestamp","toISOString","pushToDataLayer","width","height","position","onClick","autoFocus","ref","placeholder","searchPlaceholder","AzureKeyCredential","_key","constructor","Error","update","newKey","AbortError","message","super","name","isObject","Array","isArray","RegExp","isError","hasName","hasMessage","getErrorMessage","stringified","JSON","stringify","String","err","stringToUint8Array","format","TextEncoder","encode","utf8StringToUint8Array","base64ToUint8Array","base64String","base64UrlToUint8Array","bytes","Uint8Array","i","highNibble","lowNibble","hexDigits","has","hexStringToUint8Array","atob","charCodeAt","Set","_a$1","uuidFunction","crypto","randomUUID","bind","uuid","randomNumber","floor","random","_a","_b","_c","_d","importScripts","Deno","version","deno","Bun","isNodeLike","process","Boolean","versions","node","GeographyPoint","geographyPoint","longitude","latitude","toJSON","coordinates","crs","properties","IndexDocumentsBatch","actions","upload","documents","batch","doc","assign","__actionType","merge","mergeOrUpload","keyNameOrDocuments","keyValues","keyName","keyValue","escapeQuotesIfString","previous","trim","endsWith","odata","strings","values","join","KnownSearchAudience","__rest","s","t","p","getOwnPropertySymbols","propertyIsEnumerable","__values","o","Symbol","iterator","m","next","done","__await","v","__asyncGenerator","_arguments","generator","asyncIterator","g","q","create","AsyncIterator","verb","f","Promise","resolve","then","reject","n","b","resume","r","fulfill","settle","shift","__asyncDelegator","__asyncValues","d","SuppressedError","ValidPhaseNames","HttpPipeline","policies","_policies","_orderedPolicies","addPolicy","policy","phase","afterPhase","removePolicy","removedPolicies","filter","policyDescriptor","sendRequest","httpClient","request","getOrderedPolicies","reduceRight","req","pipeline","orderPolicies","clone","policyMap","Map","createPhase","hasRun","hasAfterPolicies","serializePhase","noPhase","deserializePhase","retryPhase","signPhase","orderedPhases","getPhase","descriptor","policyName","dependsOn","dependants","set","add","get","afterPolicies","afterPolicyName","afterNode","beforePolicies","beforePolicyName","beforeNode","walkPhase","size","dependant","delete","walkPhases","iteration","initialResultLength","debugEnvVariable","DEBUG","enabledString","enabledNamespaces","skippedNamespaces","debuggers","enable","debugObj","namespace","createDebugger","enabled","disable","log","firstArg","console","error","warn","info","debug","namespaces","wildcard","namespaceList","split","ns","startsWith","substr","instance","skipped","enabledNamespace","newDebugger","destroy","extend","index","splice","registeredLoggers","logLevelFromEnv","AZURE_LOG_LEVEL","azureLogLevel","AzureLogger","AZURE_LOG_LEVELS","isAzureLogLevel","level","logger","shouldEnable","setLogLevel","levelMap","verbose","warning","createClientLogger","clientRootLogger","patchLogMethod","createLogger","parent","child","logLevel","logger$2","RedactedString","defaultAllowedHeaderNames","defaultAllowedQueryParameters","Sanitizer","additionalAllowedHeaderNames","allowedHeaderNames","additionalAllowedQueryParameters","allowedQueryParameters","concat","toLowerCase","sanitize","obj","seen","sanitizeHeaders","sanitizeUrl","sanitizeQuery","url","URL","searchParams","sanitized","keys","k","logPolicyName","redirectPolicyName","allowedRedirect","redirectPolicy","maxRetries","response","handleRedirect","async","currentRetries","status","headers","locationHeader","method","body","res","SDK_VERSION","DEFAULT_RETRY_POLICY_COUNT","getUserAgentValue","prefix","runtimeInfo","localNavigator","navigator","osPlatform","userAgentData","entropyValues","getHighEntropyValues","architecture","platformVersion","brand","brands","brandOrder","foundBrand","find","getBrandVersionString","userAgent","browserRegexes","regex","browser","match","getBrowserInfo","EdgeRuntime","setPlatformSpecificData","defaultAgent","telemetryInfo","parts","token","getUserAgentString","UserAgentHeaderName","userAgentPolicyName","isNodeReadableStream","isWebReadableStream","getReader","tee","rawContent","getRawContent","blob","stream","toBlobPart","source","Blob","Response","encodeHeaders","getLength","byteLength","buildRequestBody$1","boundary","sources","flatMap","part","contentLength","total","partLength","getTotalLength","multipartPolicyName","maxBoundaryLength","validBoundaryCharacters","multipartPolicy","multipartBody","contentTypeHeader","parsedHeader","contentType","parsedBoundary","from","assertValidBoundary","StandardAbortMessage","delayInMs","onAborted","rejectOnAbort","abortErrorMsg","removeListeners","abortSignal","aborted","parseHeaderValueAsNumber","headerName","valueAsNum","Number","isNaN","RetryAfterHeader","AllRetryAfterHeaders","getRetryAfterInMs","header","retryAfterValue","retryAfterHeader","diff","parse","isFinite","DEFAULT_CLIENT_RETRY_INTERVAL","DEFAULT_CLIENT_MAX_RETRY_INTERVAL","exponentialRetryStrategy","retryInterval","retryDelayInMs","maxRetryInterval","maxRetryDelayInMs","retryAfterInMs","retry","retryCount","responseError","matchedSystemError","code","isSystemError","ignoreSystemErrors","isExponential","isExponentialRetryResponse","ignoreExponentialResponse","ignoreHttpStatusCodes","unknownResponse","isThrottlingRetryResponse","skipStrategy","errorToThrow","exponentialDelay","pow","clampedExponentialDelay","ceil","retryPolicyLogger","retryPolicyName","retryPolicy","strategies","retryRequest","requestId","strategiesLoop","strategy","strategyLogger","modifiers","redirectTo","defaultRetryPolicyName","normalizeName","HttpHeadersImpl","rawHeaders","_headersMap","preserveCase","entry","normalizedName","headerIterator","createHttpHeaders","formDataPolicyName","formDataPolicy","FormData","formData","formDataMap","entries","formDataToFormDataMap","urlSearchParams","URLSearchParams","subValue","append","wwwFormUrlEncode","fieldName","fileName","prepareFormData","errorMessage","setClientRequestIdPolicyName","tlsPolicyName","knownContextKeys","for","createTracingContext","context","TracingContextImpl","parentContext","setValue","initialContext","_contextMap","newContext","getValue","deleteValue","state$1","instrumenterImplementation","getInstrumenter","createRequestHeaders","parseTraceparentHeader","startSpan","_name","spanOptions","end","isRecording","recordException","setAttribute","setStatus","tracingContext","withContext","_context","callback","callbackArgs","createTracingClient","packageName","packageVersion","operationOptions","startSpanResult","tracingOptions","updatedOptions","withSpan","traceparentHeader","custom","errorSanitizer","RestError","statusCode","defineProperty","enumerable","setPrototypeOf","REQUEST_SEND_ERROR","PARSE_ERROR","tracingPolicyName","tracingPolicy","userAgentPromise","userAgentPrefix","sanitizer","tracingClient","tryCreateTracingClient","spanAttributes","spanKind","tryCreateSpan","serviceRequestId","tryProcessResponse","tryProcessError","createPipelineFromOptions","tlsSettings","tlsOptions","proxyPolicy","proxyOptions","decompressResponsePolicy","userAgentValue","userAgentPolicy","userAgentOptions","requestIdHeaderName","setClientRequestIdPolicy","telemetryOptions","clientRequestIdHeaderName","defaultRetryPolicy","retryOptions","loggingOptions","redirectOptions","logPolicy","FetchHttpClient","protocol","allowInsecureConnection","proxySettings","abortController","abortControllerCleanup","AbortController","abortListener","abort","timeout","setupAbortSignal","pipelineHeaders","Headers","buildFetchHeaders","streaming","requestBody","buildBodyStream","onProgress","onUploadProgress","buildRequestBody","requestInit","signal","Request","credentials","withCredentials","cache","duplex","fetch","loadedBytes","httpResponse","responseHeaders","buildPipelineHeaders","bodyStream","onDownloadProgress","onEnd","streamResponseStatusCodes","POSITIVE_INFINITY","enableBrowserStreams","browserStreamBody","responseStream","blobBody","bodyAsText","text","buildPipelineResponse","makeRequest","getError","readableStream","pipeThrough","TransformStream","isTransformStreamSupported","transform","chunk","controller","enqueue","terminate","reader","ReadableStream","pull","read","close","releaseLock","reason","createDefaultHttpClient","PipelineRequestImpl","_e","_f","_g","disableKeepAlive","DEFAULT_CYCLER_OPTIONS","forcedRefreshWindowInMs","retryIntervalInMs","refreshWindowInMs","createTokenCycler","credential","tokenCyclerOptions","tenantId","refreshWorker","cycler","isRefreshing","shouldRefresh","expiresOnTimestamp","mustRefresh","refresh","scopes","getTokenOptions","getAccessToken","refreshTimeout","tryGetAccessToken","finalToken","beginRefresh","getToken","_token","catch","tokenOptions","hasClaimChallenge","claims","tenantIdChanged","bearerTokenAuthenticationPolicyName","defaultAuthorizeRequest","accessToken","bearerTokenAuthenticationPolicy","challengeCallbacks","callbacks","authorizeRequest","authorizeRequestOnChallenge","challenge","getChallenge","disableKeepAlivePolicyName","encodeByteArray","str","fromCharCode","btoa","decodeString","byteString","arr","XML_ATTRKEY","XML_CHARKEY","validateISODuration","validUuidRegex","flattenResponse","fullResponse","responseSpec","parsedHeaders","parsedBody","bodyMapper","isNullable","nullable","expectedBodyTypeName","readableStreamBody","modelProperties","isPageableResponse","serializedName","arrayResponse","getOwnPropertyNames","responseObject","combinedHeadersAndBody","hasNullableType","shouldWrapBody","handleNullableResponseAndWrappableBody","mapperTypeName","SerializerImpl","modelMappers","isXML","validateConstraints","mapper","objectName","failValidation","constraintName","constraintValue","constraints","ExclusiveMaximum","ExclusiveMinimum","InclusiveMaximum","InclusiveMinimum","MaxItems","MaxLength","MinItems","MinLength","MultipleOf","Pattern","UniqueItems","pattern","ar","serialize","object","xml","rootName","includeRoot","xmlCharKey","payload","mapperType","isConstant","required","typeName","objectType","pipe","ArrayBuffer","isView","serializeBasicTypes","allowedValues","serializeEnumType","substring","toUTCString","getTime","dateToUnixTime","isDuration","serializeDateTypes","serializeByteArrayType","buffer","ch","len","trimEnd","bufferToBase64Url","serializeBase64UrlType","serializer","isXml","elementType","element","className","tempArray","serializedValue","xmlNamespace","xmlnsKey","xmlNamespacePrefix","serializeSequenceType","valueType","tempDictionary","getXmlObjectValue","serializeDictionaryType","getPolymorphicDiscriminatorRecursively","getPolymorphicMapper","modelProps","resolveModelProperties","propertyMapper","readOnly","propName","parentObject","xmlIsWrapped","xmlName","xmlElementName","paths","splitSerializeName","pop","pathName","childObject","propertyObjectName","toSerialize","polymorphicDiscriminator","clientName","xmlIsAttribute","additionalPropertiesMapper","additionalProperties","modelMapper","resolveReferencedMapper","resolveAdditionalProperties","propNames","clientPropName","every","pn","serializeCompositeType","deserialize","responseBody","ignoreUnknownProperties","handledPropertyNames","headerCollectionPrefix","dictionary","headerKey","xmlIsMsText","propertyName","wrapped","elementList","property","propertyInstance","steps","arrayInstance","isAdditionalProperty","responsePropName","isSpecialXmlProperty","deserializeCompositeType","parseFloat","unixTimeToDate","base64UrlToByteArray","deserializeSequenceType","deserializeDictionaryType","prop","classes","partialclass","subwords","charAt","polymorphicPropertyName","discriminatorName","discriminatorValue","uberParent","polymorphicMapper","discriminators","typeNamesToCheck","currentName","indexDiscriminator","getIndexDiscriminator","getPolymorphicDiscriminatorSafely","MapperTypeNames","Base64Url","ByteArray","Composite","DateTime","DateTimeRfc1123","Dictionary","Enum","Sequence","Stream","TimeSpan","UnixTime","state","operationRequestMap","WeakMap","getOperationArgumentValueFromParameter","operationArguments","parameter","fallbackObject","parameterPath","parameterMapper","propertySearchResult","getPropertyFromParameterPath","propertyFound","useDefaultValue","propertyValue","parameterPathPart","originalRequestSymbol","getOperationRequestInfo","hasOriginalRequest","defaultJsonContentTypes","defaultXmlContentTypes","deserializationPolicyName","deserializationPolicy","jsonContentTypes","expectedContentTypes","json","xmlContentTypes","parseXML","serializerOptions","parsedResponse","operationResponse","opts","contentComponents","component","msg","errCode","operationInfo","shouldDeserialize","shouldDeserializeResponse","operationSpec","responses","operationResponseGetter","getOperationResponseMap","shouldReturnResponse","isSuccessByStatus","isExpectedStatusCode","expectedStatusCodes","isOperationSpecEmpty","errorResponseSpec","default","initialErrorMessage","defaultBodyMapper","defaultHeadersMapper","headersMapper","deserializedError","valueToDeserialize","elementName","internalError","defaultError","handleErrorResponse","deserializeError","httpMethod","deserializeResponseBody","getPathStringFromParameter","serializationPolicyName","serializationPolicy","stringifyXML","headerParameters","headerParameter","headerValue","customHeaders","requestOptions","customHeaderName","serializeHeaders","requestBodyParameterPathString","isStream","getXmlValueWithNamespace","xmlNamespaceKey","prepareXMLRootList","mediaType","formDataParameters","formDataParameter","formDataParameterValue","formDataParameterPropertyName","serializeRequestBody","cachedHttpClient","CollectionFormatToDelimiterMap","CSV","SSV","Multi","TSV","Pipes","getRequestUrl","baseUri","urlReplacements","urlParameters","urlParameter","urlParameterValue","parameterPathString","skipEncoding","encodeURIComponent","calculateUrlReplacements","isAbsolutePath","requestUrl","replaceAll","path","pathToAppend","parsedUrl","newPath","pathname","searchStart","appendPath","queryParams","sequenceParams","queryParameters","queryParameter","queryParameterValue","delimiter","collectionFormat","calculateQueryParameters","noOverwrite","combinedParams","queryString","pairs","pair","existingValue","simpleParseQueryParams","valueSet","unshift","searchPieces","appendQueryParams","replacements","searchValue","replaceValue","logger$1","ServiceClient","_requestContentType","requestContentType","_endpoint","endpoint","_allowInsecureConnection","_httpClient","credentialScopes","getCredentialScopes","credentialOptions","serializationOptions","deserializationOptions","createClientPipeline","createDefaultPipeline","additionalPolicies","sendOperationRequest","baseUrl","createPipelineRequest","getStreamingResponseStatusCodes","rawResponse","flatResponse","onResponse","details","toHttpHeadersLike","HttpHeaders","getHeaderKey","contains","remove","toJson","headersArray","headerNames","headerValues","resultPreservingCasing","toCompatResponse","keepAlive","prepare","validateRequestProperties","toWebResourceLike","ExtendedServiceClient","keepAliveOptions","handleRedirects","userProvidedCallBack","lastResponse","ErrorResponse","SearchDocumentsResult","count","coverage","facets","answers","nextPageParameters","nextLink","semanticPartialResponseReason","semanticPartialResponseType","SearchRequest","includeTotalResultCount","highlightFields","highlightPostTag","highlightPreTag","minimumCoverage","orderBy","queryType","scoringStatistics","sessionId","scoringParameters","scoringProfile","searchText","searchFields","searchMode","select","skip","top","semanticConfigurationName","semanticErrorHandling","semanticMaxWaitInMilliseconds","semanticQuery","captions","vectorQueries","vectorFilterMode","VectorQuery","kind","kNearestNeighborsCount","fields","exhaustive","oversampling","weight","SuggestDocumentsResult","SuggestRequest","useFuzzyMatching","suggesterName","IndexBatch","IndexDocumentsResult","AutocompleteResult","AutocompleteRequest","autocompleteMode","VectorizedQuery","vector","VectorizableTextQuery","Mappers","freeze","__proto__","AutocompleteItem","queryPlusText","ErrorAdditionalInfo","ErrorDetail","additionalInfo","FacetResult","IndexAction","IndexingResult","succeeded","QueryAnswerResult","score","highlights","QueryCaptionResult","SearchResult","_score","_rerankerScore","_highlights","_captions","SuggestResult","_text","accept","indexName","apiVersion","searchRequest","searchText1","suggestRequest","autocompleteRequest","DocumentsImpl","client","countOperationSpec","searchGet","searchGetOperationSpec","searchPost","searchPostOperationSpec","getOperationSpec","suggestGet","suggestGetOperationSpec","suggestPost","suggestPostOperationSpec","indexOperationSpec","autocompleteGet","autocompleteGetOperationSpec","autocompletePost","autocompletePostOperationSpec","createSerializer","SearchClient$1","packageDetails","addCustomApiVersionPolicy","apiVersionPolicy","param","newParams","API_KEY_HEADER_NAME","walk","fn","mutated","deepLazyApply","isComplex","getChildren","cached","thing","applied","cachedApply","forEach","maybeCopy","getPrototypeOf","shallowCopy","replaceChildren","ISO8601DateRegex","GeoJSONPointTypeName","WorldGeodeticSystem1984","serializeValue","deserializeValue","Infinity","NaN","isValidObject","requiredKeys","propertyValidator","maybeCoordinates","maybeCrs","maybeProperties","fns","acc","requiredKey","defaultServiceVersion","createSpan","SearchClient","serviceVersion","internalClientPipelineOptions","castCredential","signRequest","isTokenCredential","scope","audience","AzurePublicCloud","createSearchApiKeyCredentialPolicy","metadataLevel","getDocumentsCount","documentsCount","autocomplete","nonFieldOptions","fullOptions","convertSearchFields","RangeError","searchDocuments","includeTotalCount","vectorSearchOptions","semanticSearchOptions","restOptions","configurationName","errorMode","restSemanticOptions","queries","filterMode","restVectorOptions","convertSelect","convertOrderBy","convertVectorQuery","convertQueryAnswers","convertQueryCaptions","resultNextPageParameters","semanticErrorReason","semanticSearchResultsType","restResult","modifiedResults","returnValues","rerankerScore","generatedSearchResultToPublicSearchResult","continuationToken","encodeContinuationToken","listSearchResultsPage","settings","decodedContinuation","decodeContinuationToken","listSearchResultsAll","firstPage","e_1","e_1_1","return","listSearchResults","iter","byPage","pageResult","suggest","searchDocumentsResult","getDocument","selectedFields","indexDocuments","throwOnAnyFailure","uploadDocuments","mergeDocuments","mergeOrUploadDocuments","deleteDocuments","keyValuesOrOptions","decodedToken","convertVectorQueryFields","config","answerType","output","threshold","captionType","highlight","vectorQuery","language","includeNonSearch","filterExpression","country","toUpperCase","platforms","highlightOptions","endpointToUse","AZURE_AISEARCH_ENDPOINT","keyToUse","AZURE_AISEARCH_KEY","createClient","question","commonjsRequire","module","moment$1","exports","hookCallback","hooks","setHookCallback","hasOwnProp","isObjectEmpty","isUndefined","isNumber","isDate","arrLen","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","fun","momentProperties","updateInProgress","copyConfig","to","val","momentPropertiesLen","_isAMomentObject","_i","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","stack","deprecations","deprecateSimple","isFunction","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","_calendar","zeroFill","number","targetLength","forceSign","absNumber","abs","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","h","hh","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","aliases","D","dates","date","days","day","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","hour","ms","milliseconds","millisecond","minutes","minute","months","month","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","year","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","sort","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","data","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","l","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","defaults","c","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","keepOffset","toDate","inspect","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","moment","formatDate","dateString","ResultLineContainer","ResultImageContainer","ResultImage","img","ResultIcon","ResultContentContainer","ResultTitle","ResultText","ResultInfo","ResultBlock","textRef","contentPart","textToDisplay","innerHTML","imageUrl","src","alt","updatedAt","PaginationWrapperStyle","PaginationItem","ResultDivider$1","SVG","svg","LEFTSVG","PaginationWrapper","nextPage","previousPage","currentPage","totalPages","fill","viewBox","preserveAspectRatio","Pagination","goToPage","rest","isLastPage","color","borderBottom","useSearch","fetchLLM","minimumScore","enableLocalStorage","setResults","isResultsLoading","setIsLoading","setSuggestions","isSuggestionsLoading","setSuggestionLoading","isLlmLoading","setLlmLoading","fetchError","setFetchError","llm","setLlm","localStorageItem","localStorage","getItem","MINIMUM_SCORE","documentIterator","documentResultsIteratorToList","suggestedQuestions","flat","filteredDocumentsByUnique","uniqueDocuments","originalId","filterDocumentsByUniquePage","filteredDocumentsWithoutFAQ","llmResponse","ok","llmData","hasResult","fetchLLMRequest","fetchResults","usePagination","scrollRef","activeFilter","initialPage","setTotalPages","setCurrentPage","resultsToShow","setResultsToShow","skipAndTakeResults","scrollIntoView","behavior","SearchComponent","BackDrop","InputContainer","ErrorMessage$1","DgpAISearchComponent","showSearch","onCloseSearch","setSearchTerm","openResults","setOpenResults","open","PagedResultsContainer","SearchTitle","h2","SearchSubtitle","TooltipContent","props","isVisible","GeneratedAnswer","ErrorMessage","SkeletonWrapper","CitationWrapper","CitationResultsWrapper","Citation","CitationBlockWrapper","CitationBlockTitle","CitationBlockDate","CitationTitle","ResultCountContainer","ResultDivider","FilterWrapper","FilterContainer","FilterButton","SearchResetButton","TitleContainer","ScrollButton","ArrowIcon","PagedResults","searchQuery","isInputSearch","activeFilters","setActiveFilters","allFilters","setAllFilters","hasToSearchOnLlm","searchIsOpen","setSearchIsOpen","scrollable","setScrollable","wrapperRef","tooltipVisible","setTooltipVisible","filteredResults","setFilteredResults","toggleSearch","getOccurrence","allDocumentTypes","uniqueDocumentTypes","filters","documentType","llmRef","answer","filterScrollable","windowWidth","innerWidth","scrollWidth","stopPropagation","generatedAnswer","answerDisclaimer","citations","citationTitle","citation","lastModified","id","noResults","allResults","newScrollLeft","scrollLeft","offsetWidth","handleScroll"],"sourceRoot":""}