{"version":3,"file":"static/js/main.b3eb67cb.js","mappings":"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GAGJ,GAGJ,CAkDA,MAAMC,GAAU,CAEZ,aAAc,CACVC,aAAc,aACdC,aAAc,YAElB,aAAc,CACVD,aAAc,aACdC,aAAc,YAGlB,WAAY,CACRD,aAAc,WACdC,aAAc,UAElB,aAAc,CACVD,aAAc,aACdC,aAAc,YAElB,WAAY,CACRD,aAAc,WACdC,aAAc,UAElB,aAAc,CACVD,aAAc,aACdC,aAAc,YAGlB,WAAY,CACRD,aAAc,WACdC,aAAc,UAElB,cAAe,CACXD,aAAc,cACdC,aAAc,aAElB,WAAY,CACRD,aAAc,WACdC,aAAc,UAElB,WAAY,CACRD,aAAc,WACdC,aAAc,UAElB,aAAc,CACVD,aAAc,aACdC,aAAc,YAElB,YAAa,CACTD,aAAc,YACdC,aAAc,WAElB,WAAY,CACRD,aAAc,WACdC,aAAc,UAElB,YAAa,CACTD,aAAc,YACdC,aAAc,WAElB,WAAY,CACRD,aAAc,WACdC,aAAc,UAElB,YAAa,CACTD,aAAc,YACdC,aAAc,WAElB,aAAc,CACVD,aAAc,aACdC,aAAc,YAElB,aAAc,CACVD,aAAc,aACdC,aAAc,YAElB,aAAc,CACVD,aAAc,aACdC,aAAc,YAElB,WAAY,CACRD,aAAc,WACdC,aAAc,WAMtB,IAAIC,GAAoB,CACpB,aACA,mBACA,qBACA,oBACA,qBACA,oBAEA,aACA,mBACA,qBACA,oBACA,qBACA,oBAEA,WACA,iBACA,mBACA,kBACA,mBACA,kBAEA,aACA,mBACA,qBACA,oBACA,qBACA,oBAEA,WACA,iBACA,mBACA,kBACA,mBACA,kBAEA,aACA,mBACA,qBACA,oBACA,qBACA,oBAEA,WACA,iBACA,mBACA,kBACA,mBACA,kBAEA,cACA,oBACA,sBACA,qBACA,sBACA,qBAEA,WACA,iBACA,mBACA,kBACA,mBACA,kBAEA,WACA,iBACA,mBACA,kBACA,mBACA,kBAEA,aACA,mBACA,qBACA,oBACA,qBACA,oBAEA,YACA,kBACA,oBACA,mBACA,oBACA,mBAEA,WACA,iBACA,mBACA,kBACA,mBACA,kBAEA,YACA,kBACA,oBACA,mBACA,oBACA,mBAEA,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y2E,IAC/C,SArCSztC,GAaF/wC,iBAAW,ECLtB,MAAMD,GAAe,CACjBo+E,OCpBqD,CACrD,CACI,YAAe,MACf,YAAe,WACf,QAAW,CACP,CACI,MAAS,aAIrB,CACI,YAAe,MACf,YAAe,mBACf,QAAW,CACP,CACI,MAAS,KAEb,CACI,UAAa,IAEjB,CACI,WAAc,MAI1B,CACI,YAAe,MACf,YAAe,qBACf,QAAW,CACP,CACI,YAAe,IAEnB,CACI,WAAc,IAElB,CACI,OAAU,GAEd,CACI,MAAS,MAIrB,CACI,YAAe,MACf,YAAe,cACf,QAAW,CACP,CACI,WAAc,SAI1B,CACI,YAAe,iBACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,QAI1B,CACI,YAAe,yBACf,YAAe,SACf,QAAW,CACP,CACI,WAAc,SAI1B,CACI,YAAe,0BACf,YAAe,SACf,QAAW,CACP,CACI,WAAc,SAI1B,CACI,YAAe,0BACf,YAAe,SACf,QAAW,CACP,CACI,WAAc,OAElB,CACI,MAAS,aAIrB,CACI,YAAe,8BACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,QAI1B,CACI,YAAe,6BACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,SAI1B,CACI,YAAe,YACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,MAElB,CACI,MAAS,WAEb,CACI,UAAa,MAIzB,CACI,YAAe,YACf,YAAe,WACf,QAAW,CACP,CACI,UAAa,IAEjB,CACI,WAAc,IAElB,CACI,MAAS,aAIrB,CACI,YAAe,YACf,YAAe,SACf,QAAW,CACP,CACI,IAAO,aAInB,CACI,YAAe,qBACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,QAI1B,CACI,YAAe,oBACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,QAI1B,CACI,YAAe,8BACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,SAI1B,CACI,YAAe,4BACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,SAI1B,CACI,YAAe,MACf,YAAe,MACf,QAAW,CACP,CACI,WAAc,SAI1B,CACI,YAAe,MACf,YAAe,WACf,QAAW,CACP,CACI,W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","sources":["../node_modules/classnames/index.js","../node_modules/gud/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/lodash.isfunction/index.js","../node_modules/lodash.isobject/index.js","../node_modules/moment/moment.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/node module decorator","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/index.js","../node_modules/value-equal/index.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/history/esm/history.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/esm/react-router.js","../node_modules/react-router-dom/esm/react-router-dom.js","serviceWorker.ts","../node_modules/reactstrap/es/utils.js","../node_modules/reactstrap/es/NavbarBrand.js","components/footer.tsx","util.ts","models/flightleg.ts","components/googlemaps/location.ts","models/flightawaremessages.ts","signalr/withflightawaretracking.tsx","../node_modules/reactstrap/es/Container.js","../node_modules/reactstrap/es/Row.js","../node_modules/reactstrap/es/Col.js","components/flight/flightinfo.tsx","components/flight/flightexpired.tsx","components/googlemaps/api.tsx","components/googlemaps/util.ts","components/googlemaps/map.tsx","components/googlemaps/control.tsx","components/map/basemap.tsx","components/map/styles.ts","components/googlemaps/polyline.tsx","components/googlemaps/richmarker.tsx","components/map/aircraftmarker.tsx","components/map/flightleg.tsx","components/googlemaps/marker.tsx","components/flight/trackingmap.tsx","pages/map.tsx","../node_modules/@microsoft/signalr/src/DefaultReconnectPolicy.ts","../node_modules/@microsoft/signalr/src/Errors.ts","../node_modules/@microsoft/signalr/src/HttpClient.ts","../node_modules/@microsoft/signalr/src/ILogger.ts","../node_modules/@microsoft/signalr/src/Loggers.ts","../node_modules/@microsoft/signalr/src/Utils.ts","../node_modules/@microsoft/signalr/src/FetchHttpClient.ts","../node_modules/@microsoft/signalr/src/XhrHttpClient.ts","../node_modules/@microsoft/signalr/src/DefaultHttpClient.ts","../node_modules/@microsoft/signalr/src/HeaderNames.ts","../node_modules/@microsoft/signalr/src/ITransport.ts","../node_modules/@microsoft/signalr/src/AbortController.ts","../node_modules/@microsoft/signalr/src/LongPollingTransport.ts","../node_modules/@microsoft/signalr/src/ServerSentEventsTransport.ts","../node_modules/@microsoft/signalr/src/WebSocketTransport.ts","../node_modules/@microsoft/signalr/src/HttpConnection.ts","../node_modules/@microsoft/signalr/src/TextMessageFormat.ts","../node_modules/@microsoft/signalr/src/HandshakeProtocol.ts","../node_modules/@microsoft/signalr/src/IHubProtocol.ts","../node_modules/@microsoft/signalr/src/Subject.ts","../node_modules/@microsoft/signalr/src/HubConnection.ts","../node_modules/@microsoft/signalr/src/JsonHubProtocol.ts","../node_modules/@microsoft/signalr/src/HubConnectionBuilder.ts","signalr/signlarhub.ts","signalr/flightawarehub.ts","App.tsx","index.tsx"],"sourcesContent":["/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg) && arg.length) {\n\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\tif (inner) {\n\t\t\t\t\tclasses.push(inner);\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar ReactIs = require('react-is');\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\n\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\n\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\n\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\n\nvar TYPE_STATICS = {};\nTYPE_STATICS[ReactIs.ForwardRef] = FORWARD_REF_STATICS;\n\nfunction getStatics(component) {\n if (ReactIs.isMemo(component)) {\n return MEMO_STATICS;\n }\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\n\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n\n return targetComponent;\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS 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/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n nullTag = '[object Null]',\n proxyTag = '[object Proxy]',\n undefinedTag = '[object Undefined]';\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\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/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\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 a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\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(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isFunction;\n","/**\n * lodash 3.0.2 (Custom Build) \n * Build: `lodash modern modularize exports=\"npm\" -o ./`\n * Copyright 2012-2015 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\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(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[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 match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?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 function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/** @license React v16.8.6\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),n=require(\"object-assign\"),r=require(\"scheduler\");function ba(a,b,c,d,e,f,g,h){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[c,d,e,f,g,h],k=0;a=Error(b.replace(/%s/g,function(){return l[k++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction x(a){for(var b=arguments.length-1,c=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,d=0;dthis.eventPool.length&&this.eventPool.push(a)}\nfunction hb(a){a.eventPool=[];a.getPooled=ib;a.release=jb}var kb=y.extend({data:null}),lb=y.extend({data:null}),mb=[9,13,27,32],nb=Ra&&\"CompositionEvent\"in window,ob=null;Ra&&\"documentMode\"in document&&(ob=document.documentMode);\nvar pb=Ra&&\"TextEvent\"in window&&!ob,qb=Ra&&(!nb||ob&&8=ob),rb=String.fromCharCode(32),sb={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},tb=!1;\nfunction ub(a,b){switch(a){case \"keyup\":return-1!==mb.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function vb(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var wb=!1;function xb(a,b){switch(a){case \"compositionend\":return vb(b);case \"keypress\":if(32!==b.which)return null;tb=!0;return rb;case \"textInput\":return a=b.data,a===rb&&tb?null:a;default:return null}}\nfunction yb(a,b){if(wb)return\"compositionend\"===a||!nb&&ub(a,b)?(a=eb(),db=cb=bb=null,wb=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1b}return!1}function C(a,b,c,d,e){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new C(a,0,!1,a,null)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new C(b,1,!1,a[1],null)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new C(a,2,!1,a.toLowerCase(),null)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new C(a,2,!1,a,null)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new C(a,3,!1,a.toLowerCase(),null)});[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new C(a,3,!0,a,null)});\n[\"capture\",\"download\"].forEach(function(a){D[a]=new C(a,4,!1,a,null)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new C(a,6,!1,a,null)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new C(a,5,!1,a.toLowerCase(),null)});var rc=/[\\-:]([a-z])/g;function sc(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(rc,\nsc);D[b]=new C(b,1,!1,a,null)});\"xlink:actuate xlink:arcrole xlink:href xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/1999/xlink\")});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(rc,sc);D[b]=new C(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\")});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new C(a,1,!1,a.toLowerCase(),null)});\nfunction tc(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2zd.length&&zd.push(a)}}}var Fd={},Gd=0,Hd=\"_reactListenersID\"+(\"\"+Math.random()).slice(2);\nfunction Id(a){Object.prototype.hasOwnProperty.call(a,Hd)||(a[Hd]=Gd++,Fd[a[Hd]]={});return Fd[a[Hd]]}function Jd(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}function Kd(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ld(a,b){var c=Kd(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Kd(c)}}function Md(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Md(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Nd(){for(var a=window,b=Jd();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Jd(a.document)}return b}function Od(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Pd(){var a=Nd();if(Od(a)){if(\"selectionStart\"in a)var b={start:a.selectionStart,end:a.selectionEnd};else a:{b=(b=a.ownerDocument)&&b.defaultView||window;var c=b.getSelection&&b.getSelection();if(c&&0!==c.rangeCount){b=c.anchorNode;var d=c.anchorOffset,e=c.focusNode;c=c.focusOffset;try{b.nodeType,e.nodeType}catch(A){b=null;break a}var f=0,g=-1,h=-1,l=0,k=0,m=a,p=null;b:for(;;){for(var t;;){m!==b||0!==d&&3!==m.nodeType||(g=f+d);m!==e||0!==c&&3!==m.nodeType||(h=f+c);3===m.nodeType&&(f+=m.nodeValue.length);\nif(null===(t=m.firstChild))break;p=m;m=t}for(;;){if(m===a)break b;p===b&&++l===d&&(g=f);p===e&&++k===c&&(h=f);if(null!==(t=m.nextSibling))break;m=p;p=m.parentNode}m=t}b=-1===g||-1===h?null:{start:g,end:h}}else b=null}b=b||{start:0,end:0}}else b=null;return{focusedElem:a,selectionRange:b}}\nfunction Qd(a){var b=Nd(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Md(c.ownerDocument.documentElement,c)){if(null!==d&&Od(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ld(c,f);var g=Ld(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Sd={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},Td=null,Ud=null,Vd=null,Wd=!1;\nfunction Xd(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(Wd||null==Td||Td!==Jd(c))return null;c=Td;\"selectionStart\"in c&&Od(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return Vd&&dd(Vd,c)?null:(Vd=c,a=y.getPooled(Sd.select,Ud,a,b),a.type=\"select\",a.target=Td,Qa(a),a)}\nvar Yd={eventTypes:Sd,extractEvents:function(a,b,c,d){var e=d.window===d?d.document:9===d.nodeType?d:d.ownerDocument,f;if(!(f=!e)){a:{e=Id(e);f=sa.onSelect;for(var g=0;g=b.length?void 0:x(\"93\"),b=b[0]),c=b),null==c&&(c=\"\"));a._wrapperState={initialValue:uc(c)}}\nfunction de(a,b){var c=uc(b.value),d=uc(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function ee(a){var b=a.textContent;b===a._wrapperState.initialValue&&(a.value=b)}var fe={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction ge(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?ge(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar ie=void 0,je=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==fe.svg||\"innerHTML\"in a)a.innerHTML=b;else{ie=ie||document.createElement(\"div\");ie.innerHTML=\"\"+b+\"\";for(b=ie.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ke(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar le={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},me=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(le).forEach(function(a){me.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);le[b]=le[a]})});function ne(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||le.hasOwnProperty(a)&&le[a]?(\"\"+b).trim():b+\"px\"}\nfunction oe(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=ne(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var pe=n({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction qe(a,b){b&&(pe[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML?x(\"137\",a,\"\"):void 0),null!=b.dangerouslySetInnerHTML&&(null!=b.children?x(\"60\"):void 0,\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML?void 0:x(\"61\")),null!=b.style&&\"object\"!==typeof b.style?x(\"62\",\"\"):void 0)}\nfunction re(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}\nfunction se(a,b){a=9===a.nodeType||11===a.nodeType?a:a.ownerDocument;var c=Id(a);b=sa[b];for(var d=0;dGe||(a.current=Fe[Ge],Fe[Ge]=null,Ge--)}function G(a,b){Ge++;Fe[Ge]=a.current;a.current=b}var He={},H={current:He},I={current:!1},Ie=He;\nfunction Je(a,b){var c=a.type.contextTypes;if(!c)return He;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function J(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Ke(a){F(I,a);F(H,a)}function Le(a){F(I,a);F(H,a)}\nfunction Me(a,b,c){H.current!==He?x(\"168\"):void 0;G(H,b,a);G(I,c,a)}function Ne(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)e in a?void 0:x(\"108\",ic(b)||\"Unknown\",e);return n({},c,d)}function Oe(a){var b=a.stateNode;b=b&&b.__reactInternalMemoizedMergedChildContext||He;Ie=H.current;G(H,b,a);G(I,I.current,a);return!0}\nfunction Pe(a,b,c){var d=a.stateNode;d?void 0:x(\"169\");c?(b=Ne(a,b,Ie),d.__reactInternalMemoizedMergedChildContext=b,F(I,a),F(H,a),G(H,b,a)):F(I,a);G(I,c,a)}var Qe=null,Re=null;function Se(a){return function(b){try{return a(b)}catch(c){}}}\nfunction Te(a){if(\"undefined\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)return!1;var b=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(b.isDisabled||!b.supportsFiber)return!0;try{var c=b.inject(a);Qe=Se(function(a){return b.onCommitFiberRoot(c,a)});Re=Se(function(a){return b.onCommitFiberUnmount(c,a)})}catch(d){}return!0}\nfunction Ue(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.contextDependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.effectTag=0;this.lastEffect=this.firstEffect=this.nextEffect=null;this.childExpirationTime=this.expirationTime=0;this.alternate=null}function K(a,b,c,d){return new Ue(a,b,c,d)}\nfunction Ve(a){a=a.prototype;return!(!a||!a.isReactComponent)}function We(a){if(\"function\"===typeof a)return Ve(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===cc)return 11;if(a===ec)return 14}return 2}\nfunction Xe(a,b){var c=a.alternate;null===c?(c=K(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.effectTag=0,c.nextEffect=null,c.firstEffect=null,c.lastEffect=null);c.childExpirationTime=a.childExpirationTime;c.expirationTime=a.expirationTime;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;c.contextDependencies=a.contextDependencies;c.sibling=a.sibling;\nc.index=a.index;c.ref=a.ref;return c}\nfunction Ye(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)Ve(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case Xb:return Ze(c.children,e,f,b);case bc:return $e(c,e|3,f,b);case Yb:return $e(c,e|2,f,b);case Zb:return a=K(12,c,b,e|4),a.elementType=Zb,a.type=Zb,a.expirationTime=f,a;case dc:return a=K(13,c,b,e),a.elementType=dc,a.type=dc,a.expirationTime=f,a;default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case $b:g=10;break a;case ac:g=9;break a;case cc:g=11;break a;case ec:g=\n14;break a;case fc:g=16;d=null;break a}x(\"130\",null==a?a:typeof a,\"\")}b=K(g,c,b,e);b.elementType=a;b.type=d;b.expirationTime=f;return b}function Ze(a,b,c,d){a=K(7,a,d,b);a.expirationTime=c;return a}function $e(a,b,c,d){a=K(8,a,d,b);b=0===(b&1)?Yb:bc;a.elementType=b;a.type=b;a.expirationTime=c;return a}function af(a,b,c){a=K(6,a,null,b);a.expirationTime=c;return a}\nfunction bf(a,b,c){b=K(4,null!==a.children?a.children:[],a.key,b);b.expirationTime=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}function cf(a,b){a.didError=!1;var c=a.earliestPendingTime;0===c?a.earliestPendingTime=a.latestPendingTime=b:cb&&(a.latestPendingTime=b);df(b,a)}\nfunction ef(a,b){a.didError=!1;if(0===b)a.earliestPendingTime=0,a.latestPendingTime=0,a.earliestSuspendedTime=0,a.latestSuspendedTime=0,a.latestPingedTime=0;else{bb?a.earliestPendingTime=a.latestPendingTime=0:a.earliestPendingTime>b&&(a.earliestPendingTime=a.latestPendingTime));c=a.earliestSuspendedTime;0===c?cf(a,b):bc&&cf(a,b)}df(0,a)}function ff(a,b){a.didError=!1;a.latestPingedTime>=b&&(a.latestPingedTime=0);var c=a.earliestPendingTime,d=a.latestPendingTime;c===b?a.earliestPendingTime=d===b?a.latestPendingTime=0:d:d===b&&(a.latestPendingTime=c);c=a.earliestSuspendedTime;d=a.latestSuspendedTime;0===c?a.earliestSuspendedTime=a.latestSuspendedTime=b:cb&&(a.latestSuspendedTime=b);df(b,a)}\nfunction gf(a,b){var c=a.earliestPendingTime;a=a.earliestSuspendedTime;c>b&&(b=c);a>b&&(b=a);return b}function df(a,b){var c=b.earliestSuspendedTime,d=b.latestSuspendedTime,e=b.earliestPendingTime,f=b.latestPingedTime;e=0!==e?e:f;0===e&&(0===a||da&&(a=c);b.nextExpirationTimeToWorkOn=e;b.expirationTime=a}function L(a,b){if(a&&a.defaultProps){b=n({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c])}return b}\nfunction hf(a){var b=a._result;switch(a._status){case 1:return b;case 2:throw b;case 0:throw b;default:a._status=0;b=a._ctor;b=b();b.then(function(b){0===a._status&&(b=b.default,a._status=1,a._result=b)},function(b){0===a._status&&(a._status=2,a._result=b)});switch(a._status){case 1:return a._result;case 2:throw a._result;}a._result=b;throw b;}}var jf=(new aa.Component).refs;\nfunction kf(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:n({},b,c);a.memoizedState=c;d=a.updateQueue;null!==d&&0===a.expirationTime&&(d.baseState=c)}\nvar tf={isMounted:function(a){return(a=a._reactInternalFiber)?2===ed(a):!1},enqueueSetState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueReplaceState:function(a,b,c){a=a._reactInternalFiber;var d=lf();d=mf(d,a);var e=nf(d);e.tag=rf;e.payload=b;void 0!==c&&null!==c&&(e.callback=c);of();pf(a,e);qf(a,d)},enqueueForceUpdate:function(a,b){a=a._reactInternalFiber;var c=lf();c=mf(c,a);var d=nf(c);d.tag=\nsf;void 0!==b&&null!==b&&(d.callback=b);of();pf(a,d);qf(a,c)}};function uf(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!dd(c,d)||!dd(e,f):!0}\nfunction vf(a,b,c){var d=!1,e=He;var f=b.contextType;\"object\"===typeof f&&null!==f?f=M(f):(e=J(b)?Ie:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Je(a,e):He);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=tf;a.stateNode=b;b._reactInternalFiber=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction wf(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&tf.enqueueReplaceState(b,b.state,null)}\nfunction xf(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jf;var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=M(f):(f=J(b)?Ie:H.current,e.context=Je(a,f));f=a.updateQueue;null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState);f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kf(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==\ntypeof e.componentWillMount||(b=e.state,\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&tf.enqueueReplaceState(e,e.state,null),f=a.updateQueue,null!==f&&(yf(a,f,c,e,d),e.state=a.memoizedState));\"function\"===typeof e.componentDidMount&&(a.effectTag|=4)}var zf=Array.isArray;\nfunction Af(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;var d=void 0;c&&(1!==c.tag?x(\"309\"):void 0,d=c.stateNode);d?void 0:x(\"147\",a);var e=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===e)return b.ref;b=function(a){var b=d.refs;b===jf&&(b=d.refs={});null===a?delete b[e]:b[e]=a};b._stringRef=e;return b}\"string\"!==typeof a?x(\"284\"):void 0;c._owner?void 0:x(\"290\",a)}return a}\nfunction Bf(a,b){\"textarea\"!==a.type&&x(\"31\",\"[object Object]\"===Object.prototype.toString.call(b)?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":b,\"\")}\nfunction Cf(a){function b(b,c){if(a){var d=b.lastEffect;null!==d?(d.nextEffect=c,b.lastEffect=c):b.firstEffect=b.lastEffect=c;c.nextEffect=null;c.effectTag=8}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b,c){a=Xe(a,b,c);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return c;d=b.alternate;if(null!==d)return d=d.index,du?(B=q,q=null):B=q.sibling;var w=t(e,q,h[u],k);if(null===w){null===q&&(q=B);break}a&&\nq&&null===w.alternate&&b(e,q);g=f(w,g,u);null===m?l=w:m.sibling=w;m=w;q=B}if(u===h.length)return c(e,q),l;if(null===q){for(;uu?(B=q,q=null):B=q.sibling;var v=t(e,q,w.value,k);if(null===v){q||(q=B);break}a&&q&&null===v.alternate&&b(e,q);g=f(v,g,u);null===m?l=v:m.sibling=v;m=v;q=B}if(w.done)return c(e,q),l;if(null===q){for(;!w.done;u++,w=h.next())w=p(e,w.value,k),null!==w&&(g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);return l}for(q=d(e,q);!w.done;u++,w=h.next())w=A(q,e,u,w.value,k),null!==w&&(a&&null!==w.alternate&&q.delete(null===w.key?u:\nw.key),g=f(w,g,u),null===m?l=w:m.sibling=w,m=w);a&&q.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===Xb&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Vb:a:{l=f.key;for(k=d;null!==k;){if(k.key===l)if(7===k.tag?f.type===Xb:k.elementType===f.type){c(a,k.sibling);d=e(k,f.type===Xb?f.props.children:f.props,h);d.ref=Af(a,k,f);d.return=a;a=d;break a}else{c(a,k);break}else b(a,k);k=\nk.sibling}f.type===Xb?(d=Ze(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ye(f.type,f.key,f.props,null,a.mode,h),h.ref=Af(a,d,f),h.return=a,a=h)}return g(a);case Wb:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[],h);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=bf(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\n\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f,h),d.return=a,a=d):(c(a,d),d=af(f,a.mode,h),d.return=a,a=d),g(a);if(zf(f))return v(a,d,f,h);if(hc(f))return R(a,d,f,h);l&&Bf(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:h=a.type,x(\"152\",h.displayName||h.name||\"Component\")}return c(a,d)}}var Df=Cf(!0),Ef=Cf(!1),Ff={},N={current:Ff},Gf={current:Ff},Hf={current:Ff};function If(a){a===Ff?x(\"174\"):void 0;return a}\nfunction Jf(a,b){G(Hf,b,a);G(Gf,a,a);G(N,Ff,a);var c=b.nodeType;switch(c){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:he(null,\"\");break;default:c=8===c?b.parentNode:b,b=c.namespaceURI||null,c=c.tagName,b=he(b,c)}F(N,a);G(N,b,a)}function Kf(a){F(N,a);F(Gf,a);F(Hf,a)}function Lf(a){If(Hf.current);var b=If(N.current);var c=he(b,a.type);b!==c&&(G(Gf,a,a),G(N,c,a))}function Mf(a){Gf.current===a&&(F(N,a),F(Gf,a))}\nvar Nf=0,Of=2,Pf=4,Qf=8,Rf=16,Sf=32,Tf=64,Uf=128,Vf=Tb.ReactCurrentDispatcher,Wf=0,Xf=null,O=null,P=null,Yf=null,Q=null,Zf=null,$f=0,ag=null,bg=0,cg=!1,dg=null,eg=0;function fg(){x(\"321\")}function gg(a,b){if(null===b)return!1;for(var c=0;c$f&&($f=m)):f=l.eagerReducer===a?l.eagerState:a(f,l.action);g=l;l=l.next}while(null!==l&&l!==d);k||(h=g,e=f);bd(f,b.memoizedState)||(qg=!0);b.memoizedState=f;b.baseUpdate=h;b.baseState=e;c.lastRenderedState=f}return[b.memoizedState,c.dispatch]}\nfunction rg(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};null===ag?(ag={lastEffect:null},ag.lastEffect=a.next=a):(b=ag.lastEffect,null===b?ag.lastEffect=a.next=a:(c=b.next,b.next=a,a.next=c,ag.lastEffect=a));return a}function sg(a,b,c,d){var e=mg();bg|=a;e.memoizedState=rg(b,c,void 0,void 0===d?null:d)}\nfunction tg(a,b,c,d){var e=ng();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&gg(d,g.deps)){rg(Nf,c,f,d);return}}bg|=a;e.memoizedState=rg(b,c,f,d)}function ug(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function vg(){}\nfunction wg(a,b,c){25>eg?void 0:x(\"301\");var d=a.alternate;if(a===Xf||null!==d&&d===Xf)if(cg=!0,a={expirationTime:Wf,action:c,eagerReducer:null,eagerState:null,next:null},null===dg&&(dg=new Map),c=dg.get(b),void 0===c)dg.set(b,a);else{for(b=c;null!==b.next;)b=b.next;b.next=a}else{of();var e=lf();e=mf(e,a);var f={expirationTime:e,action:c,eagerReducer:null,eagerState:null,next:null},g=b.last;if(null===g)f.next=f;else{var h=g.next;null!==h&&(f.next=h);g.next=f}b.last=f;if(0===a.expirationTime&&(null===\nd||0===d.expirationTime)&&(d=b.lastRenderedReducer,null!==d))try{var l=b.lastRenderedState,k=d(l,c);f.eagerReducer=d;f.eagerState=k;if(bd(k,l))return}catch(m){}finally{}qf(a,e)}}\nvar kg={readContext:M,useCallback:fg,useContext:fg,useEffect:fg,useImperativeHandle:fg,useLayoutEffect:fg,useMemo:fg,useReducer:fg,useRef:fg,useState:fg,useDebugValue:fg},ig={readContext:M,useCallback:function(a,b){mg().memoizedState=[a,void 0===b?null:b];return a},useContext:M,useEffect:function(a,b){return sg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return sg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,b){return sg(4,Pf|Sf,a,b)},\nuseMemo:function(a,b){var c=mg();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=mg();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a=d.queue={last:null,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};a=a.dispatch=wg.bind(null,Xf,a);return[d.memoizedState,a]},useRef:function(a){var b=mg();a={current:a};return b.memoizedState=a},useState:function(a){var b=mg();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={last:null,dispatch:null,\nlastRenderedReducer:og,lastRenderedState:a};a=a.dispatch=wg.bind(null,Xf,a);return[b.memoizedState,a]},useDebugValue:vg},jg={readContext:M,useCallback:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];c.memoizedState=[a,b];return a},useContext:M,useEffect:function(a,b){return tg(516,Uf|Tf,a,b)},useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return tg(4,Pf|Sf,ug.bind(null,b,a),c)},useLayoutEffect:function(a,\nb){return tg(4,Pf|Sf,a,b)},useMemo:function(a,b){var c=ng();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&gg(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a},useReducer:pg,useRef:function(){return ng().memoizedState},useState:function(a){return pg(og,a)},useDebugValue:vg},xg=null,yg=null,zg=!1;\nfunction Ag(a,b){var c=K(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.effectTag=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function Bg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction Cg(a){if(zg){var b=yg;if(b){var c=b;if(!Bg(a,b)){b=De(c);if(!b||!Bg(a,b)){a.effectTag|=2;zg=!1;xg=a;return}Ag(xg,c)}xg=a;yg=Ee(b)}else a.effectTag|=2,zg=!1,xg=a}}function Dg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&18!==a.tag;)a=a.return;xg=a}function Eg(a){if(a!==xg)return!1;if(!zg)return Dg(a),zg=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!xe(b,a.memoizedProps))for(b=yg;b;)Ag(a,b),b=De(b);Dg(a);yg=xg?De(a.stateNode):null;return!0}function Fg(){yg=xg=null;zg=!1}\nvar Gg=Tb.ReactCurrentOwner,qg=!1;function S(a,b,c,d){b.child=null===a?Ef(b,null,c,d):Df(b,a.child,c,d)}function Hg(a,b,c,d,e){c=c.render;var f=b.ref;Ig(b,e);d=hg(a,b,c,d,f,e);if(null!==a&&!qg)return b.updateQueue=a.updateQueue,b.effectTag&=-517,a.expirationTime<=e&&(a.expirationTime=0),Jg(a,b,e);b.effectTag|=1;S(a,b,d,e);return b.child}\nfunction Kg(a,b,c,d,e,f){if(null===a){var g=c.type;if(\"function\"===typeof g&&!Ve(g)&&void 0===g.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=g,Lg(a,b,g,d,e,f);a=Ye(c.type,null,d,null,b.mode,f);a.ref=b.ref;a.return=b;return b.child=a}g=a.child;if(e=c)return Sg(a,b,c);b=Jg(a,b,c);return null!==b?b.sibling:null}}return Jg(a,b,c)}}else qg=!1;b.expirationTime=0;switch(b.tag){case 2:d=\nb.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;var e=Je(b,H.current);Ig(b,c);e=hg(null,b,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;lg();if(J(d)){var f=!0;Oe(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;var g=d.getDerivedStateFromProps;\"function\"===typeof g&&kf(b,d,g,a);e.updater=tf;b.stateNode=e;e._reactInternalFiber=b;xf(b,d,a,c);b=Qg(null,b,d,!0,f,\nc)}else b.tag=0,S(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);f=b.pendingProps;a=hf(e);b.type=a;e=b.tag=We(a);f=L(a,f);g=void 0;switch(e){case 0:g=Mg(null,b,a,f,c);break;case 1:g=Og(null,b,a,f,c);break;case 11:g=Hg(null,b,a,f,c);break;case 14:g=Kg(null,b,a,L(a.type,f),d,c);break;default:x(\"306\",a,\"\")}return g;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Mg(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,\ne=b.elementType===d?e:L(d,e),Og(a,b,d,e,c);case 3:Rg(b);d=b.updateQueue;null===d?x(\"282\"):void 0;e=b.memoizedState;e=null!==e?e.element:null;yf(b,d,b.pendingProps,null,c);d=b.memoizedState.element;if(d===e)Fg(),b=Jg(a,b,c);else{e=b.stateNode;if(e=(null===a||null===a.child)&&e.hydrate)yg=Ee(b.stateNode.containerInfo),xg=b,e=zg=!0;e?(b.effectTag|=2,b.child=Ef(b,null,d,c)):(S(a,b,d,c),Fg());b=b.child}return b;case 5:return Lf(b),null===a&&Cg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,\ng=e.children,xe(d,e)?g=null:null!==f&&xe(d,f)&&(b.effectTag|=16),Ng(a,b),1!==c&&b.mode&1&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(S(a,b,g,c),b=b.child),b;case 6:return null===a&&Cg(b),null;case 13:return Sg(a,b,c);case 4:return Jf(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Df(b,null,d,c):S(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:L(d,e),Hg(a,b,d,e,c);case 7:return S(a,b,b.pendingProps,c),b.child;case 8:return S(a,b,b.pendingProps.children,\nc),b.child;case 12:return S(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;Ug(b,f);if(null!==g){var h=g.value;f=bd(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0;if(0===f){if(g.children===e.children&&!I.current){b=Jg(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var l=h.contextDependencies;if(null!==l){g=h.child;for(var k=l.first;null!==k;){if(k.context===d&&0!==\n(k.observedBits&f)){1===h.tag&&(k=nf(c),k.tag=sf,pf(h,k));h.expirationTime=b&&(qg=!0);a.contextDependencies=null}\nfunction M(a,b){if(Yg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)Yg=a,b=1073741823;b={context:a,observedBits:b,next:null};null===Xg?(null===Wg?x(\"308\"):void 0,Xg=b,Wg.contextDependencies={first:b,expirationTime:0}):Xg=Xg.next=b}return a._currentValue}var $g=0,rf=1,sf=2,ah=3,Pg=!1;function bh(a){return{baseState:a,firstUpdate:null,lastUpdate:null,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}\nfunction ch(a){return{baseState:a.baseState,firstUpdate:a.firstUpdate,lastUpdate:a.lastUpdate,firstCapturedUpdate:null,lastCapturedUpdate:null,firstEffect:null,lastEffect:null,firstCapturedEffect:null,lastCapturedEffect:null}}function nf(a){return{expirationTime:a,tag:$g,payload:null,callback:null,next:null,nextEffect:null}}function dh(a,b){null===a.lastUpdate?a.firstUpdate=a.lastUpdate=b:(a.lastUpdate.next=b,a.lastUpdate=b)}\nfunction pf(a,b){var c=a.alternate;if(null===c){var d=a.updateQueue;var e=null;null===d&&(d=a.updateQueue=bh(a.memoizedState))}else d=a.updateQueue,e=c.updateQueue,null===d?null===e?(d=a.updateQueue=bh(a.memoizedState),e=c.updateQueue=bh(c.memoizedState)):d=a.updateQueue=ch(e):null===e&&(e=c.updateQueue=ch(d));null===e||d===e?dh(d,b):null===d.lastUpdate||null===e.lastUpdate?(dh(d,b),dh(e,b)):(dh(d,b),e.lastUpdate=b)}\nfunction eh(a,b){var c=a.updateQueue;c=null===c?a.updateQueue=bh(a.memoizedState):fh(a,c);null===c.lastCapturedUpdate?c.firstCapturedUpdate=c.lastCapturedUpdate=b:(c.lastCapturedUpdate.next=b,c.lastCapturedUpdate=b)}function fh(a,b){var c=a.alternate;null!==c&&b===c.updateQueue&&(b=a.updateQueue=ch(b));return b}\nfunction gh(a,b,c,d,e,f){switch(c.tag){case rf:return a=c.payload,\"function\"===typeof a?a.call(f,d,e):a;case ah:a.effectTag=a.effectTag&-2049|64;case $g:a=c.payload;e=\"function\"===typeof a?a.call(f,d,e):a;if(null===e||void 0===e)break;return n({},d,e);case sf:Pg=!0}return d}\nfunction yf(a,b,c,d,e){Pg=!1;b=fh(a,b);for(var f=b.baseState,g=null,h=0,l=b.firstUpdate,k=f;null!==l;){var m=l.expirationTime;md?e:d);Ih.current=null;d=void 0;1c?b:c;0===b&&(Fh=null);$h(a,b)}\nfunction ai(a){for(;;){var b=a.alternate,c=a.return,d=a.sibling;if(0===(a.effectTag&1024)){T=a;a:{var e=b;b=a;var f=U;var g=b.pendingProps;switch(b.tag){case 2:break;case 16:break;case 15:case 0:break;case 1:J(b.type)&&Ke(b);break;case 3:Kf(b);Le(b);g=b.stateNode;g.pendingContext&&(g.context=g.pendingContext,g.pendingContext=null);if(null===e||null===e.child)Eg(b),b.effectTag&=-3;mh(b);break;case 5:Mf(b);var h=If(Hf.current);f=b.type;if(null!==e&&null!=b.stateNode)nh(e,b,f,g,h),e.ref!==b.ref&&(b.effectTag|=\n128);else if(g){var l=If(N.current);if(Eg(b)){g=b;e=g.stateNode;var k=g.type,m=g.memoizedProps,p=h;e[Fa]=g;e[Ga]=m;f=void 0;h=k;switch(h){case \"iframe\":case \"object\":E(\"load\",e);break;case \"video\":case \"audio\":for(k=0;k\\x3c/script>\",k=e.removeChild(e.firstChild)):\"string\"===typeof e.is?k=k.createElement(p,{is:e.is}):(k=k.createElement(p),\"select\"===p&&(p=k,e.multiple?p.multiple=!0:e.size&&(p.size=e.size))):k=k.createElementNS(l,p);e=k;e[Fa]=m;e[Ga]=g;lh(e,b,!1,!1);p=e;k=f;m=g;var t=h,A=re(k,m);switch(k){case \"iframe\":case \"object\":E(\"load\",\np);h=m;break;case \"video\":case \"audio\":for(h=0;hg&&(g=e),h>g&&(g=h),f=f.sibling;b.childExpirationTime=g}if(null!==T)return T;null!==c&&0===(c.effectTag&1024)&&(null===c.firstEffect&&\n(c.firstEffect=a.firstEffect),null!==a.lastEffect&&(null!==c.lastEffect&&(c.lastEffect.nextEffect=a.firstEffect),c.lastEffect=a.lastEffect),1=v)t=0;else if(-1===t||v component higher in the tree to provide a loading indicator or placeholder to display.\"+jc(k))}Nh=!0;m=jh(m,k);h=l;do{switch(h.tag){case 3:h.effectTag|=2048;h.expirationTime=g;g=Ch(h,m,g);eh(h,g);break a;case 1:if(t=m,A=h.type,k=h.stateNode,0===(h.effectTag&64)&&(\"function\"===typeof A.getDerivedStateFromError||null!==k&&\"function\"===typeof k.componentDidCatch&&(null===Fh||!Fh.has(k)))){h.effectTag|=2048;\nh.expirationTime=g;g=Eh(h,t,g);eh(h,g);break a}}h=h.return}while(null!==h)}T=ai(f);continue}}}break}while(1);Kh=!1;Hh.current=c;Yg=Xg=Wg=null;lg();if(e)Lh=null,a.finishedWork=null;else if(null!==T)a.finishedWork=null;else{c=a.current.alternate;null===c?x(\"281\"):void 0;Lh=null;if(Nh){e=a.latestPendingTime;f=a.latestSuspendedTime;g=a.latestPingedTime;if(0!==e&&eb?0:b)):(a.pendingCommitExpirationTime=d,a.finishedWork=c)}}\nfunction sh(a,b){for(var c=a.return;null!==c;){switch(c.tag){case 1:var d=c.stateNode;if(\"function\"===typeof c.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Fh||!Fh.has(d))){a=jh(b,a);a=Eh(c,a,1073741823);pf(c,a);qf(c,1073741823);return}break;case 3:a=jh(b,a);a=Ch(c,a,1073741823);pf(c,a);qf(c,1073741823);return}c=c.return}3===a.tag&&(c=jh(b,a),c=Ch(a,c,1073741823),pf(a,c),qf(a,1073741823))}\nfunction mf(a,b){var c=r.unstable_getCurrentPriorityLevel(),d=void 0;if(0===(b.mode&1))d=1073741823;else if(Kh&&!Oh)d=U;else{switch(c){case r.unstable_ImmediatePriority:d=1073741823;break;case r.unstable_UserBlockingPriority:d=1073741822-10*(((1073741822-a+15)/10|0)+1);break;case r.unstable_NormalPriority:d=1073741822-25*(((1073741822-a+500)/25|0)+1);break;case r.unstable_LowPriority:case r.unstable_IdlePriority:d=1;break;default:x(\"313\")}null!==Lh&&d===U&&--d}c===r.unstable_UserBlockingPriority&&\n(0===gi||d=d){a.didError=!1;b=a.latestPingedTime;if(0===b||b>c)a.latestPingedTime=c;df(c,a);c=a.expirationTime;0!==c&&Xh(a,c)}}function Ah(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=lf();b=mf(b,a);a=hi(a,b);null!==a&&(cf(a,b),b=a.expirationTime,0!==b&&Xh(a,b))}\nfunction hi(a,b){a.expirationTimeU&&Sh(),cf(a,b),Kh&&!Oh&&Lh===a||Xh(a,a.expirationTime),ii>ji&&(ii=0,x(\"185\")))}function ki(a,b,c,d,e){return r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){return a(b,c,d,e)})}var li=null,Y=null,mi=0,ni=void 0,W=!1,oi=null,Z=0,gi=0,pi=!1,qi=null,X=!1,ri=!1,si=null,ti=r.unstable_now(),ui=1073741822-(ti/10|0),vi=ui,ji=50,ii=0,wi=null;function xi(){ui=1073741822-((r.unstable_now()-ti)/10|0)}\nfunction yi(a,b){if(0!==mi){if(ba.expirationTime&&(a.expirationTime=b);W||(X?ri&&(oi=a,Z=1073741823,Di(a,1073741823,!1)):1073741823===b?Yh(1073741823,!1):yi(a,b))}\nfunction Ci(){var a=0,b=null;if(null!==Y)for(var c=Y,d=li;null!==d;){var e=d.expirationTime;if(0===e){null===c||null===Y?x(\"244\"):void 0;if(d===d.nextScheduledRoot){li=Y=d.nextScheduledRoot=null;break}else if(d===li)li=e=d.nextScheduledRoot,Y.nextScheduledRoot=e,d.nextScheduledRoot=null;else if(d===Y){Y=c;Y.nextScheduledRoot=li;d.nextScheduledRoot=null;break}else c.nextScheduledRoot=d.nextScheduledRoot,d.nextScheduledRoot=null;d=c.nextScheduledRoot}else{e>a&&(a=e,b=d);if(d===Y)break;if(1073741823===\na)break;c=d;d=d.nextScheduledRoot}}oi=b;Z=a}var Ei=!1;function di(){return Ei?!0:r.unstable_shouldYield()?Ei=!0:!1}function zi(){try{if(!di()&&null!==li){xi();var a=li;do{var b=a.expirationTime;0!==b&&ui<=b&&(a.nextExpirationTimeToWorkOn=ui);a=a.nextScheduledRoot}while(a!==li)}Yh(0,!0)}finally{Ei=!1}}\nfunction Yh(a,b){Ci();if(b)for(xi(),vi=ui;null!==oi&&0!==Z&&a<=Z&&!(Ei&&ui>Z);)Di(oi,Z,ui>Z),Ci(),xi(),vi=ui;else for(;null!==oi&&0!==Z&&a<=Z;)Di(oi,Z,!1),Ci();b&&(mi=0,ni=null);0!==Z&&yi(oi,Z);ii=0;wi=null;if(null!==si)for(a=si,si=null,b=0;b=c&&(null===si?si=[d]:si.push(d),d._defer)){a.finishedWork=b;a.expirationTime=0;return}a.finishedWork=null;a===wi?ii++:(wi=a,ii=0);r.unstable_runWithPriority(r.unstable_ImmediatePriority,function(){Zh(a,b)})}function Dh(a){null===oi?x(\"246\"):void 0;oi.expirationTime=0;pi||(pi=!0,qi=a)}function Gi(a,b){var c=X;X=!0;try{return a(b)}finally{(X=c)||W||Yh(1073741823,!1)}}\nfunction Hi(a,b){if(X&&!ri){ri=!0;try{return a(b)}finally{ri=!1}}return a(b)}function Ii(a,b,c){X||W||0===gi||(Yh(gi,!1),gi=0);var d=X;X=!0;try{return r.unstable_runWithPriority(r.unstable_UserBlockingPriority,function(){return a(b,c)})}finally{(X=d)||W||Yh(1073741823,!1)}}\nfunction Ji(a,b,c,d,e){var f=b.current;a:if(c){c=c._reactInternalFiber;b:{2===ed(c)&&1===c.tag?void 0:x(\"170\");var g=c;do{switch(g.tag){case 3:g=g.stateNode.context;break b;case 1:if(J(g.type)){g=g.stateNode.__reactInternalMemoizedMergedChildContext;break b}}g=g.return}while(null!==g);x(\"171\");g=void 0}if(1===c.tag){var h=c.type;if(J(h)){c=Ne(c,h,g);break a}}c=g}else c=He;null===b.context?b.context=c:b.pendingContext=c;b=e;e=nf(d);e.payload={element:a};b=void 0===b?null:b;null!==b&&(e.callback=b);\nof();pf(f,e);qf(f,d);return d}function Ki(a,b,c,d){var e=b.current,f=lf();e=mf(f,e);return Ji(a,b,c,e,d)}function Li(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function Mi(a,b,c){var d=3=Jh&&(b=Jh-1);this._expirationTime=Jh=b;this._root=a;this._callbacks=this._next=null;this._hasChildren=this._didComplete=!1;this._children=null;this._defer=!0}Ni.prototype.render=function(a){this._defer?void 0:x(\"250\");this._hasChildren=!0;this._children=a;var b=this._root._internalRoot,c=this._expirationTime,d=new Oi;Ji(a,b,null,c,d._onCommit);return d};\nNi.prototype.then=function(a){if(this._didComplete)a();else{var b=this._callbacks;null===b&&(b=this._callbacks=[]);b.push(a)}};\nNi.prototype.commit=function(){var a=this._root._internalRoot,b=a.firstBatch;this._defer&&null!==b?void 0:x(\"251\");if(this._hasChildren){var c=this._expirationTime;if(b!==this){this._hasChildren&&(c=this._expirationTime=b._expirationTime,this.render(this._children));for(var d=null,e=b;e!==this;)d=e,e=e._next;null===d?x(\"251\"):void 0;d._next=e._next;this._next=b;a.firstBatch=this}this._defer=!1;Bi(a,c);b=this._next;this._next=null;b=a.firstBatch=b;null!==b&&b._hasChildren&&b.render(b._children)}else this._next=\nnull,this._defer=!1};Ni.prototype._onComplete=function(){if(!this._didComplete){this._didComplete=!0;var a=this._callbacks;if(null!==a)for(var b=0;b=b;)c=d,d=d._next;a._next=d;null!==c&&(c._next=a)}return a};function Qi(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}Gb=Gi;Hb=Ii;Ib=function(){W||0===gi||(Yh(gi,!1),gi=0)};\nfunction Ri(a,b){b||(b=a?9===a.nodeType?a.documentElement:a.firstChild:null,b=!(!b||1!==b.nodeType||!b.hasAttribute(\"data-reactroot\")));if(!b)for(var c;c=a.lastChild;)a.removeChild(c);return new Pi(a,!1,b)}\nfunction Si(a,b,c,d,e){var f=c._reactRootContainer;if(f){if(\"function\"===typeof e){var g=e;e=function(){var a=Li(f._internalRoot);g.call(a)}}null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)}else{f=c._reactRootContainer=Ri(c,d);if(\"function\"===typeof e){var h=e;e=function(){var a=Li(f._internalRoot);h.call(a)}}Hi(function(){null!=a?f.legacy_renderSubtreeIntoContainer(a,b,e):f.render(b,e)})}return Li(f._internalRoot)}\nfunction Ti(a,b){var c=2 [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options))\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/** @license React v16.8.6\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var k=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.concurrent_mode\"):60111,y=n?Symbol.for(\"react.forward_ref\"):60112,z=n?Symbol.for(\"react.suspense\"):60113,aa=n?Symbol.for(\"react.memo\"):\n60115,ba=n?Symbol.for(\"react.lazy\"):60116,A=\"function\"===typeof Symbol&&Symbol.iterator;function ca(a,b,d,c,e,g,h,f){if(!a){a=void 0;if(void 0===b)a=Error(\"Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.\");else{var l=[d,c,e,g,h,f],m=0;a=Error(b.replace(/%s/g,function(){return l[m++]}));a.name=\"Invariant Violation\"}a.framesToPop=1;throw a;}}\nfunction B(a){for(var b=arguments.length-1,d=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=0;cP.length&&P.push(a)}\nfunction S(a,b,d,c){var e=typeof a;if(\"undefined\"===e||\"boolean\"===e)a=null;var g=!1;if(null===a)g=!0;else switch(e){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return d(c,a,\"\"===b?\".\"+T(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var h=0;h=b){c=a;break}a=a.next}while(a!==d);null===c?c=d:c===d&&(d=h,p());b=c.previous;b.next=c.previous=h;h.next=c;h.previous=\nb}}function v(){if(-1===k&&null!==d&&1===d.priorityLevel){m=!0;try{do u();while(null!==d&&1===d.priorityLevel)}finally{m=!1,null!==d?p():n=!1}}}function t(a){m=!0;var b=e;e=a;try{if(a)for(;null!==d;){var c=exports.unstable_now();if(d.expirationTime<=c){do u();while(null!==d&&d.expirationTime<=c)}else break}else if(null!==d){do u();while(null!==d&&!w())}}finally{m=!1,e=b,null!==d?p():n=!1,v()}}\nvar x=Date,y=\"function\"===typeof setTimeout?setTimeout:void 0,z=\"function\"===typeof clearTimeout?clearTimeout:void 0,A=\"function\"===typeof requestAnimationFrame?requestAnimationFrame:void 0,B=\"function\"===typeof cancelAnimationFrame?cancelAnimationFrame:void 0,C,D;function E(a){C=A(function(b){z(D);a(b)});D=y(function(){B(C);a(exports.unstable_now())},100)}\nif(\"object\"===typeof performance&&\"function\"===typeof performance.now){var F=performance;exports.unstable_now=function(){return F.now()}}else exports.unstable_now=function(){return x.now()};var r,q,w,G=null;\"undefined\"!==typeof window?G=window:\"undefined\"!==typeof global&&(G=global);\nif(G&&G._schedMock){var H=G._schedMock;r=H[0];q=H[1];w=H[2];exports.unstable_now=H[3]}else if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var I=null,J=function(a){if(null!==I)try{I(a)}finally{I=null}};r=function(a){null!==I?setTimeout(r,0,a):(I=a,setTimeout(J,0,!1))};q=function(){I=null};w=function(){return!1}}else{\"undefined\"!==typeof console&&(\"function\"!==typeof A&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"),\n\"function\"!==typeof B&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\"));var K=null,L=!1,M=-1,N=!1,O=!1,P=0,R=33,S=33;w=function(){return P<=exports.unstable_now()};var T=new MessageChannel,U=T.port2;T.port1.onmessage=function(){L=!1;var a=K,b=M;K=null;M=-1;var c=exports.unstable_now(),f=!1;if(0>=P-c)if(-1!==b&&b<=c)f=!0;else{N||(N=!0,E(V));K=a;M=b;return}if(null!==a){O=!0;try{a(f)}finally{O=!1}}};\nvar V=function(a){if(null!==K){E(V);var b=a-P+S;bb&&(b=8),S=bb?U.postMessage(void 0):N||(N=!0,E(V))};q=function(){K=null;L=!1;M=-1}}exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;\nexports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=g,f=k;g=a;k=exports.unstable_now();try{return b()}finally{g=c,k=f,v()}};exports.unstable_next=function(a){switch(g){case 1:case 2:case 3:var b=3;break;default:b=g}var c=g,f=k;g=b;k=exports.unstable_now();try{return a()}finally{g=c,k=f,v()}};\nexports.unstable_scheduleCallback=function(a,b){var c=-1!==k?k:exports.unstable_now();if(\"object\"===typeof b&&null!==b&&\"number\"===typeof b.timeout)b=c+b.timeout;else switch(g){case 1:b=c+-1;break;case 2:b=c+250;break;case 5:b=c+1073741823;break;case 4:b=c+1E4;break;default:b=c+5E3}a={callback:a,priorityLevel:g,expirationTime:b,next:null,previous:null};if(null===d)d=a.next=a.previous=a,p();else{c=null;var f=d;do{if(f.expirationTime>b){c=f;break}f=f.next}while(f!==d);null===c?c=d:c===d&&(d=a,p());\nb=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstable_cancelCallback=function(a){var b=a.next;if(null!==b){if(b===a)d=null;else{a===d&&(d=b);var c=a.previous;c.next=b;b.previous=c}a.next=a.previous=null}};exports.unstable_wrapCallback=function(a){var b=g;return function(){var c=g,f=k;g=b;k=exports.unstable_now();try{return a.apply(this,arguments)}finally{g=c,k=f,v()}}};exports.unstable_getCurrentPriorityLevel=function(){return g};\nexports.unstable_shouldYield=function(){return!e&&(null!==d&&d.expirationTime {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport gud from 'gud';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + gud() + '__';\n\n var Provider =\n /*#__PURE__*/\n function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer =\n /*#__PURE__*/\n function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to) {\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash = void 0;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction valueEqual(a, b) {\n if (a === b) return true;\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n var aType = typeof a === 'undefined' ? 'undefined' : _typeof(a);\n var bType = typeof b === 'undefined' ? 'undefined' : _typeof(b);\n\n if (aType !== bType) return false;\n\n if (aType === 'object') {\n var aValue = a.valueOf();\n var bValue = b.valueOf();\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n\n if (aKeys.length !== bKeys.length) return false;\n\n return aKeys.every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n } else {\n throw new Error(prefix + \": \" + (message || ''));\n }\n}\n\nexport default invariant;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n var hashIndex = window.location.href.indexOf('#');\n window.location.replace(window.location.href.slice(0, hashIndex >= 0 ? hashIndex : 0) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n return '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import createContext from 'mini-create-react-context';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport { createMemoryHistory, createLocation, locationsAreEqual, createPath } from 'history';\nimport invariant from 'tiny-invariant';\nimport pathToRegexp from 'path-to-regexp';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport { isValidElementType } from 'react-is';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport hoistStatics from 'hoist-non-react-statics';\n\n// TODO: Replace with React.createContext once we can assume React 16+\n\nvar createNamedContext = function createNamedContext(name) {\n var context = createContext();\n context.displayName = name;\n return context;\n};\n\nvar context =\n/*#__PURE__*/\ncreateNamedContext(\"Router\");\n\n/**\n * The public API for putting history on context.\n */\n\nvar Router =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Router, _React$Component);\n\n Router.computeRootMatch = function computeRootMatch(pathname) {\n return {\n path: \"/\",\n url: \"/\",\n params: {},\n isExact: pathname === \"/\"\n };\n };\n\n function Router(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n _this.state = {\n location: props.history.location\n }; // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n\n _this._isMounted = false;\n _this._pendingLocation = null;\n\n if (!props.staticContext) {\n _this.unlisten = props.history.listen(function (location) {\n if (_this._isMounted) {\n _this.setState({\n location: location\n });\n } else {\n _this._pendingLocation = location;\n }\n });\n }\n\n return _this;\n }\n\n var _proto = Router.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({\n location: this._pendingLocation\n });\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n };\n\n _proto.render = function render() {\n return React.createElement(context.Provider, {\n children: this.props.children || null,\n value: {\n history: this.props.history,\n location: this.state.location,\n match: Router.computeRootMatch(this.state.location.pathname),\n staticContext: this.props.staticContext\n }\n });\n };\n\n return Router;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(prevProps.history === this.props.history, \"You cannot change \") : void 0;\n };\n}\n\n/**\n * The public API for a that stores location in memory.\n */\n\nvar MemoryRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(MemoryRouter, _React$Component);\n\n function MemoryRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createMemoryHistory(_this.props);\n return _this;\n }\n\n var _proto = MemoryRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return MemoryRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\") : void 0;\n };\n}\n\nvar Lifecycle =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Lifecycle, _React$Component);\n\n function Lifecycle() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Lifecycle.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n };\n\n _proto.render = function render() {\n return null;\n };\n\n return Lifecycle;\n}(React.Component);\n\n/**\n * The public API for prompting the user before navigating away from a screen.\n */\n\nfunction Prompt(_ref) {\n var message = _ref.message,\n _ref$when = _ref.when,\n when = _ref$when === void 0 ? true : _ref$when;\n return React.createElement(context.Consumer, null, function (context$$1) {\n !context$$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n if (!when || context$$1.staticContext) return null;\n var method = context$$1.history.block;\n return React.createElement(Lifecycle, {\n onMount: function onMount(self) {\n self.release = method(message);\n },\n onUpdate: function onUpdate(self, prevProps) {\n if (prevProps.message !== message) {\n self.release();\n self.release = method(message);\n }\n },\n onUnmount: function onUnmount(self) {\n self.release();\n },\n message: message\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var messageType = PropTypes.oneOfType([PropTypes.func, PropTypes.string]);\n Prompt.propTypes = {\n when: PropTypes.bool,\n message: messageType.isRequired\n };\n}\n\nvar cache = {};\nvar cacheLimit = 10000;\nvar cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n var generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\n\n\nfunction generatePath(path, params) {\n if (path === void 0) {\n path = \"/\";\n }\n\n if (params === void 0) {\n params = {};\n }\n\n return path === \"/\" ? path : compilePath(path)(params, {\n pretty: true\n });\n}\n\n/**\n * The public API for navigating programmatically with a component.\n */\n\nfunction Redirect(_ref) {\n var computedMatch = _ref.computedMatch,\n to = _ref.to,\n _ref$push = _ref.push,\n push = _ref$push === void 0 ? false : _ref$push;\n return React.createElement(context.Consumer, null, function (context$$1) {\n !context$$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var history = context$$1.history,\n staticContext = context$$1.staticContext;\n var method = push ? history.push : history.replace;\n var location = createLocation(computedMatch ? typeof to === \"string\" ? generatePath(to, computedMatch.params) : _extends({}, to, {\n pathname: generatePath(to.pathname, computedMatch.params)\n }) : to); // When rendering in a static context,\n // set the new location immediately.\n\n if (staticContext) {\n method(location);\n return null;\n }\n\n return React.createElement(Lifecycle, {\n onMount: function onMount() {\n method(location);\n },\n onUpdate: function onUpdate(self, prevProps) {\n var prevLocation = createLocation(prevProps.to);\n\n if (!locationsAreEqual(prevLocation, _extends({}, location, {\n key: prevLocation.key\n }))) {\n method(location);\n }\n },\n to: to\n });\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nvar cache$1 = {};\nvar cacheLimit$1 = 10000;\nvar cacheCount$1 = 0;\n\nfunction compilePath$1(path, options) {\n var cacheKey = \"\" + options.end + options.strict + options.sensitive;\n var pathCache = cache$1[cacheKey] || (cache$1[cacheKey] = {});\n if (pathCache[path]) return pathCache[path];\n var keys = [];\n var regexp = pathToRegexp(path, keys, options);\n var result = {\n regexp: regexp,\n keys: keys\n };\n\n if (cacheCount$1 < cacheLimit$1) {\n pathCache[path] = result;\n cacheCount$1++;\n }\n\n return result;\n}\n/**\n * Public API for matching a URL pathname to a path.\n */\n\n\nfunction matchPath(pathname, options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === \"string\") options = {\n path: options\n };\n var _options = options,\n path = _options.path,\n _options$exact = _options.exact,\n exact = _options$exact === void 0 ? false : _options$exact,\n _options$strict = _options.strict,\n strict = _options$strict === void 0 ? false : _options$strict,\n _options$sensitive = _options.sensitive,\n sensitive = _options$sensitive === void 0 ? false : _options$sensitive;\n var paths = [].concat(path);\n return paths.reduce(function (matched, path) {\n if (!path) return null;\n if (matched) return matched;\n\n var _compilePath = compilePath$1(path, {\n end: exact,\n strict: strict,\n sensitive: sensitive\n }),\n regexp = _compilePath.regexp,\n keys = _compilePath.keys;\n\n var match = regexp.exec(pathname);\n if (!match) return null;\n var url = match[0],\n values = match.slice(1);\n var isExact = pathname === url;\n if (exact && !isExact) return null;\n return {\n path: path,\n // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url,\n // the matched portion of the URL\n isExact: isExact,\n // whether or not we matched exactly\n params: keys.reduce(function (memo, key, index) {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n/**\n * The public API for matching a single path and rendering.\n */\n\n\nvar Route =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Route, _React$Component);\n\n function Route() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Route.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context$$1) {\n !context$$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$$1.location;\n var match = _this.props.computedMatch ? _this.props.computedMatch // already computed the match for us\n : _this.props.path ? matchPath(location.pathname, _this.props) : context$$1.match;\n\n var props = _extends({}, context$$1, {\n location: location,\n match: match\n });\n\n var _this$props = _this.props,\n children = _this$props.children,\n component = _this$props.component,\n render = _this$props.render; // Preact uses an empty array as children by\n // default, so use null if that's the case.\n\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n if (typeof children === \"function\") {\n children = children(props);\n\n if (children === undefined) {\n if (process.env.NODE_ENV !== \"production\") {\n var path = _this.props.path;\n process.env.NODE_ENV !== \"production\" ? warning(false, \"You returned `undefined` from the `children` function of \" + (\", but you \") + \"should have returned a React element or `null`\") : void 0;\n }\n\n children = null;\n }\n }\n\n return React.createElement(context.Provider, {\n value: props\n }, children && !isEmptyChildren(children) ? children : props.match ? component ? React.createElement(component, props) : render ? render(props) : null : null);\n });\n };\n\n return Route;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: function component(props, propName) {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\"Invalid prop 'component' supplied to 'Route': the prop is not a valid React component\");\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.component), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.children && !isEmptyChildren(this.props.children) && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.component && this.props.render), \"You should not use and in the same route; will be ignored\") : void 0;\n };\n\n Route.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n return _extends({}, location, {\n pathname: addLeadingSlash(basename) + location.pathname\n });\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n var base = addLeadingSlash(basename);\n if (location.pathname.indexOf(base) !== 0) return location;\n return _extends({}, location, {\n pathname: location.pathname.substr(base.length)\n });\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return function () {\n process.env.NODE_ENV !== \"production\" ? invariant(false, \"You cannot %s with \", methodName) : invariant(false);\n };\n}\n\nfunction noop() {}\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\n\n\nvar StaticRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(StaticRouter, _React$Component);\n\n function StaticRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.handlePush = function (location) {\n return _this.navigateTo(location, \"PUSH\");\n };\n\n _this.handleReplace = function (location) {\n return _this.navigateTo(location, \"REPLACE\");\n };\n\n _this.handleListen = function () {\n return noop;\n };\n\n _this.handleBlock = function () {\n return noop;\n };\n\n return _this;\n }\n\n var _proto = StaticRouter.prototype;\n\n _proto.navigateTo = function navigateTo(location, action) {\n var _this$props = this.props,\n _this$props$basename = _this$props.basename,\n basename = _this$props$basename === void 0 ? \"\" : _this$props$basename,\n _this$props$context = _this$props.context,\n context = _this$props$context === void 0 ? {} : _this$props$context;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n };\n\n _proto.render = function render() {\n var _this$props2 = this.props,\n _this$props2$basename = _this$props2.basename,\n basename = _this$props2$basename === void 0 ? \"\" : _this$props2$basename,\n _this$props2$context = _this$props2.context,\n context = _this$props2$context === void 0 ? {} : _this$props2$context,\n _this$props2$location = _this$props2.location,\n location = _this$props2$location === void 0 ? \"/\" : _this$props2$location,\n rest = _objectWithoutPropertiesLoose(_this$props2, [\"basename\", \"context\", \"location\"]);\n\n var history = {\n createHref: function createHref(path) {\n return addLeadingSlash(basename + createURL(path));\n },\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n return React.createElement(Router, _extends({}, rest, {\n history: history,\n staticContext: context\n }));\n };\n\n return StaticRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { StaticRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for rendering the first that matches.\n */\n\nvar Switch =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Switch, _React$Component);\n\n function Switch() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Switch.prototype;\n\n _proto.render = function render() {\n var _this = this;\n\n return React.createElement(context.Consumer, null, function (context$$1) {\n !context$$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = _this.props.location || context$$1.location;\n var element, match; // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n\n React.Children.forEach(_this.props.children, function (child) {\n if (match == null && React.isValidElement(child)) {\n element = child;\n var path = child.props.path || child.props.from;\n match = path ? matchPath(location.pathname, _extends({}, child.props, {\n path: path\n })) : context$$1.match;\n }\n });\n return match ? React.cloneElement(element, {\n location: location,\n computedMatch: match\n }) : null;\n });\n };\n\n return Switch;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function (prevProps) {\n process.env.NODE_ENV !== \"production\" ? warning(!(this.props.location && !prevProps.location), ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.') : void 0;\n process.env.NODE_ENV !== \"production\" ? warning(!(!this.props.location && prevProps.location), ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.') : void 0;\n };\n}\n\n/**\n * A public higher-order component to access the imperative API\n */\n\nfunction withRouter(Component) {\n var displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n\n var C = function C(props) {\n var wrappedComponentRef = props.wrappedComponentRef,\n remainingProps = _objectWithoutPropertiesLoose(props, [\"wrappedComponentRef\"]);\n\n return React.createElement(context.Consumer, null, function (context$$1) {\n !context$$1 ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use <\" + displayName + \" /> outside a \") : invariant(false) : void 0;\n return React.createElement(Component, _extends({}, remainingProps, context$$1, {\n ref: wrappedComponentRef\n }));\n });\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (process.env.NODE_ENV !== \"production\") {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n if (typeof window !== \"undefined\") {\n var global = window;\n var key = \"__react_router_build__\";\n var buildNames = {\n cjs: \"CommonJS\",\n esm: \"ES modules\",\n umd: \"UMD\"\n };\n\n if (global[key] && global[key] !== \"esm\") {\n var initialBuildName = buildNames[global[key]];\n var secondaryBuildName = buildNames[\"esm\"]; // TODO: Add link to article that explains in detail how to avoid\n // loading 2 different builds.\n\n throw new Error(\"You are loading the \" + secondaryBuildName + \" build of React Router \" + (\"on a page that is already running the \" + initialBuildName + \" \") + \"build, so things won't work right.\");\n }\n\n global[key] = \"esm\";\n }\n}\n\nexport { MemoryRouter, Prompt, Redirect, Route, Router, StaticRouter, Switch, generatePath, matchPath, withRouter, context as __RouterContext };\n","import _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport React from 'react';\nimport { Router, __RouterContext, matchPath } from 'react-router';\nexport * from 'react-router';\nimport { createBrowserHistory, createHashHistory, createLocation } from 'history';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\nimport invariant from 'tiny-invariant';\n\n/**\n * The public API for a that uses HTML5 history.\n */\n\nvar BrowserRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(BrowserRouter, _React$Component);\n\n function BrowserRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createBrowserHistory(_this.props);\n return _this;\n }\n\n var _proto = BrowserRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return BrowserRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\") : void 0;\n };\n}\n\n/**\n * The public API for a that uses window.location.hash.\n */\n\nvar HashRouter =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(HashRouter, _React$Component);\n\n function HashRouter() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.history = createHashHistory(_this.props);\n return _this;\n }\n\n var _proto = HashRouter.prototype;\n\n _proto.render = function render() {\n return React.createElement(Router, {\n history: this.history,\n children: this.props.children\n });\n };\n\n return HashRouter;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function () {\n process.env.NODE_ENV !== \"production\" ? warning(!this.props.history, \" ignores the history prop. To use a custom history, \" + \"use `import { Router }` instead of `import { HashRouter as Router }`.\") : void 0;\n };\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n/**\n * The public API for rendering a history-aware .\n */\n\n\nvar Link =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Link, _React$Component);\n\n function Link() {\n return _React$Component.apply(this, arguments) || this;\n }\n\n var _proto = Link.prototype;\n\n _proto.handleClick = function handleClick(event, history) {\n try {\n if (this.props.onClick) this.props.onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (!event.defaultPrevented && // onClick prevented default\n event.button === 0 && ( // ignore everything but left clicks\n !this.props.target || this.props.target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n var method = this.props.replace ? history.replace : history.push;\n method(this.props.to);\n }\n };\n\n _proto.render = function render() {\n var _this = this;\n\n var _this$props = this.props,\n innerRef = _this$props.innerRef,\n replace = _this$props.replace,\n to = _this$props.to,\n rest = _objectWithoutPropertiesLoose(_this$props, [\"innerRef\", \"replace\", \"to\"]); // eslint-disable-line no-unused-vars\n\n\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var location = typeof to === \"string\" ? createLocation(to, null, null, context.location) : to;\n var href = location ? context.history.createHref(location) : \"\";\n return React.createElement(\"a\", _extends({}, rest, {\n onClick: function onClick(event) {\n return _this.handleClick(event, context.history);\n },\n href: href,\n ref: innerRef\n }));\n });\n };\n\n return Link;\n}(React.Component);\n\nif (process.env.NODE_ENV !== \"production\") {\n var toType = PropTypes.oneOfType([PropTypes.string, PropTypes.object]);\n var innerRefType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.shape({\n current: PropTypes.any\n })]);\n Link.propTypes = {\n innerRef: innerRefType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nfunction joinClassnames() {\n for (var _len = arguments.length, classnames = new Array(_len), _key = 0; _key < _len; _key++) {\n classnames[_key] = arguments[_key];\n }\n\n return classnames.filter(function (i) {\n return i;\n }).join(\" \");\n}\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\n\n\nfunction NavLink(_ref) {\n var _ref$ariaCurrent = _ref[\"aria-current\"],\n ariaCurrent = _ref$ariaCurrent === void 0 ? \"page\" : _ref$ariaCurrent,\n _ref$activeClassName = _ref.activeClassName,\n activeClassName = _ref$activeClassName === void 0 ? \"active\" : _ref$activeClassName,\n activeStyle = _ref.activeStyle,\n classNameProp = _ref.className,\n exact = _ref.exact,\n isActiveProp = _ref.isActive,\n locationProp = _ref.location,\n strict = _ref.strict,\n styleProp = _ref.style,\n to = _ref.to,\n rest = _objectWithoutPropertiesLoose(_ref, [\"aria-current\", \"activeClassName\", \"activeStyle\", \"className\", \"exact\", \"isActive\", \"location\", \"strict\", \"style\", \"to\"]);\n\n var path = typeof to === \"object\" ? to.pathname : to; // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n\n var escapedPath = path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n return React.createElement(__RouterContext.Consumer, null, function (context) {\n !context ? process.env.NODE_ENV !== \"production\" ? invariant(false, \"You should not use outside a \") : invariant(false) : void 0;\n var pathToMatch = locationProp ? locationProp.pathname : context.location.pathname;\n var match = escapedPath ? matchPath(pathToMatch, {\n path: escapedPath,\n exact: exact,\n strict: strict\n }) : null;\n var isActive = !!(isActiveProp ? isActiveProp(match, context.location) : match);\n var className = isActive ? joinClassnames(classNameProp, activeClassName) : classNameProp;\n var style = isActive ? _extends({}, styleProp, activeStyle) : styleProp;\n return React.createElement(Link, _extends({\n \"aria-current\": isActive && ariaCurrent || null,\n className: className,\n style: style,\n to: to\n }, rest));\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n var ariaCurrentType = PropTypes.oneOf([\"page\", \"step\", \"location\", \"date\", \"time\", \"true\"]);\n NavLink.propTypes = _extends({}, Link.propTypes, {\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n strict: PropTypes.bool,\n style: PropTypes.object\n });\n}\n\nexport { BrowserRouter, HashRouter, Link, NavLink };\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\ntype Config = {\r\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\r\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\r\n};\r\n\r\nexport function register(config?: Config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(\r\n (process as { env: { [key: string]: string } }).env.PUBLIC_URL,\r\n window.location.href\r\n );\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl: string, config?: Config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import isFunction from 'lodash.isfunction';\nimport PropTypes from 'prop-types'; // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/js/src/modal.js#L436-L443\n\nexport function getScrollbarWidth() {\n var scrollDiv = document.createElement('div'); // .modal-scrollbar-measure styles // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.4/scss/_modal.scss#L106-L113\n\n scrollDiv.style.position = 'absolute';\n scrollDiv.style.top = '-9999px';\n scrollDiv.style.width = '50px';\n scrollDiv.style.height = '50px';\n scrollDiv.style.overflow = 'scroll';\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n}\nexport function setScrollbarWidth(padding) {\n document.body.style.paddingRight = padding > 0 ? padding + \"px\" : null;\n}\nexport function isBodyOverflowing() {\n return document.body.clientWidth < window.innerWidth;\n}\nexport function getOriginalBodyPadding() {\n var style = window.getComputedStyle(document.body, null);\n return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);\n}\nexport function conditionallyUpdateScrollbar() {\n var scrollbarWidth = getScrollbarWidth(); // https://github.com/twbs/bootstrap/blob/v4.0.0-alpha.6/js/src/modal.js#L433\n\n var fixedContent = document.querySelectorAll('.fixed-top, .fixed-bottom, .is-fixed, .sticky-top')[0];\n var bodyPadding = fixedContent ? parseInt(fixedContent.style.paddingRight || 0, 10) : 0;\n\n if (isBodyOverflowing()) {\n setScrollbarWidth(bodyPadding + scrollbarWidth);\n }\n}\nvar globalCssModule;\nexport function setGlobalCssModule(cssModule) {\n globalCssModule = cssModule;\n}\nexport function mapToCssModules(className, cssModule) {\n if (className === void 0) {\n className = '';\n }\n\n if (cssModule === void 0) {\n cssModule = globalCssModule;\n }\n\n if (!cssModule) return className;\n return className.split(' ').map(function (c) {\n return cssModule[c] || c;\n }).join(' ');\n}\n/**\n * Returns a new object with the key/value pairs from `obj` that are not in the array `omitKeys`.\n */\n\nexport function omit(obj, omitKeys) {\n var result = {};\n Object.keys(obj).forEach(function (key) {\n if (omitKeys.indexOf(key) === -1) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n/**\n * Returns a filtered copy of an object with only the specified keys.\n */\n\nexport function pick(obj, keys) {\n var pickKeys = Array.isArray(keys) ? keys : [keys];\n var length = pickKeys.length;\n var key;\n var result = {};\n\n while (length > 0) {\n length -= 1;\n key = pickKeys[length];\n result[key] = obj[key];\n }\n\n return result;\n}\nvar warned = {};\nexport function warnOnce(message) {\n if (!warned[message]) {\n /* istanbul ignore else */\n if (typeof console !== 'undefined') {\n console.error(message); // eslint-disable-line no-console\n }\n\n warned[message] = true;\n }\n}\nexport function deprecated(propType, explanation) {\n return function validate(props, propName, componentName) {\n if (props[propName] !== null && typeof props[propName] !== 'undefined') {\n warnOnce(\"\\\"\" + propName + \"\\\" property of \\\"\" + componentName + \"\\\" has been deprecated.\\n\" + explanation);\n }\n\n for (var _len = arguments.length, rest = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n rest[_key - 3] = arguments[_key];\n }\n\n return propType.apply(void 0, [props, propName, componentName].concat(rest));\n };\n} // Shim Element if needed (e.g. in Node environment)\n\nvar Element = typeof window === 'object' && window.Element || function () {};\n\nexport function DOMElement(props, propName, componentName) {\n if (!(props[propName] instanceof Element)) {\n return new Error('Invalid prop `' + propName + '` supplied to `' + componentName + '`. Expected prop to be an instance of Element. Validation failed.');\n }\n}\nexport var targetPropType = PropTypes.oneOfType([PropTypes.string, PropTypes.func, DOMElement, PropTypes.shape({\n current: PropTypes.any\n})]);\nexport var tagPropType = PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n}), PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string, PropTypes.shape({\n $$typeof: PropTypes.symbol,\n render: PropTypes.func\n})]))]);\n/* eslint key-spacing: [\"error\", { afterColon: true, align: \"value\" }] */\n// These are all setup to match what is in the bootstrap _variables.scss\n// https://github.com/twbs/bootstrap/blob/v4-dev/scss/_variables.scss\n\nexport var TransitionTimeouts = {\n Fade: 150,\n // $transition-fade\n Collapse: 350,\n // $transition-collapse\n Modal: 300,\n // $modal-transition\n Carousel: 600 // $carousel-transition\n\n}; // Duplicated Transition.propType keys to ensure that Reactstrap builds\n// for distribution properly exclude these keys for nested child HTML attributes\n// since `react-transition-group` removes propTypes in production builds.\n\nexport var TransitionPropTypeKeys = ['in', 'mountOnEnter', 'unmountOnExit', 'appear', 'enter', 'exit', 'timeout', 'onEnter', 'onEntering', 'onEntered', 'onExit', 'onExiting', 'onExited'];\nexport var TransitionStatuses = {\n ENTERING: 'entering',\n ENTERED: 'entered',\n EXITING: 'exiting',\n EXITED: 'exited'\n};\nexport var keyCodes = {\n esc: 27,\n space: 32,\n enter: 13,\n tab: 9,\n up: 38,\n down: 40,\n home: 36,\n end: 35,\n n: 78,\n p: 80\n};\nexport var PopperPlacements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\nexport var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nexport function isReactRefObj(target) {\n if (target && typeof target === 'object') {\n return 'current' in target;\n }\n\n return false;\n}\nexport function findDOMElements(target) {\n if (isReactRefObj(target)) {\n return target.current;\n }\n\n if (isFunction(target)) {\n return target();\n }\n\n if (typeof target === 'string' && canUseDOM) {\n var selection = document.querySelectorAll(target);\n\n if (!selection.length) {\n selection = document.querySelectorAll(\"#\" + target);\n }\n\n if (!selection.length) {\n throw new Error(\"The target '\" + target + \"' could not be identified in the dom, tip: check spelling\");\n }\n\n return selection;\n }\n\n return target;\n}\nexport function isArrayOrNodeList(els) {\n if (els === null) {\n return false;\n }\n\n return Array.isArray(els) || canUseDOM && typeof els.length === 'number';\n}\nexport function getTarget(target) {\n var els = findDOMElements(target);\n\n if (isArrayOrNodeList(els)) {\n return els[0];\n }\n\n return els;\n}\nexport var defaultToggleEvents = ['touchstart', 'click'];\nexport function addMultipleEventListeners(_els, handler, _events, useCapture) {\n var els = _els;\n\n if (!isArrayOrNodeList(els)) {\n els = [els];\n }\n\n var events = _events;\n\n if (typeof events === 'string') {\n events = events.split(/\\s+/);\n }\n\n if (!isArrayOrNodeList(els) || typeof handler !== 'function' || !Array.isArray(events)) {\n throw new Error(\"\\n The first argument of this function must be DOM node or an array on DOM nodes or NodeList.\\n The second must be a function.\\n The third is a string or an array of strings that represents DOM events\\n \");\n }\n\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.addEventListener(event, handler, useCapture);\n });\n });\n return function removeEvents() {\n Array.prototype.forEach.call(events, function (event) {\n Array.prototype.forEach.call(els, function (el) {\n el.removeEventListener(event, handler, useCapture);\n });\n });\n };\n}\nexport var focusableElements = ['a[href]', 'area[href]', 'input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'object', 'embed', '[tabindex]:not(.modal)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'];","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'a'\n};\n\nvar NavbarBrand = function NavbarBrand(props) {\n var className = props.className,\n cssModule = props.cssModule,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, 'navbar-brand'), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nNavbarBrand.propTypes = propTypes;\nNavbarBrand.defaultProps = defaultProps;\nexport default NavbarBrand;","import React from 'react';\r\nimport { NavbarBrand } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\n\r\nexport const Footer: React.FC = () => {\r\n return (\r\n
\r\n
Powered by
\r\n \"\"\r\n
\r\n );\r\n}","import * as moment from 'moment';\r\n\r\ntype successResponse = {\r\n status: 'success',\r\n msg?: string,\r\n data: T\r\n}\r\n\r\ntype errorResponse = {\r\n status: 'error',\r\n msg?: string\r\n}\r\n\r\nexport type response = successResponse | errorResponse;\r\n\r\nexport function postJson>(url: string, body: object, init?: RequestInit, includeVerification: boolean = true) {\r\n\r\n const postInit: RequestInit = { method: 'post', body: JSON.stringify(body), credentials: 'same-origin' };\r\n init = init ? { ...postInit, ...init } : postInit;\r\n\r\n if (includeVerification) {\r\n const {\r\n headers,\r\n } = init;\r\n\r\n if (headers) {\r\n init.headers = new Headers(headers);\r\n } else {\r\n init.headers = new Headers();\r\n }\r\n\r\n init.headers.append('content-type', 'application/json');\r\n init.headers.append('x-RequestVerificationToken', (document.getElementsByName('__RequestVerificationToken')[0] as HTMLInputElement).value);\r\n }\r\n\r\n function handleResponse(response: Response) {\r\n function handleJsonText(text: string): T {\r\n if (text) {\r\n try {\r\n var json = JSON.parse(text);\r\n } catch (e) {\r\n if (response.ok) {\r\n throw new Error(\"Error parsing JSON: \" + e + \"Response: \" + text);\r\n } else {\r\n throw new Error(\"Error(\" + response.status + \"): \" + (text || response.statusText));\r\n }\r\n }\r\n\r\n if (response.ok) return json;\r\n throw json;\r\n }\r\n \r\n if (!response.ok) {\r\n throw new Error(\"Error(\" + response.status + \"): \" + (response.statusText));\r\n }\r\n\r\n return null as any as T; // Small type hack to NOT have to include null in the signature, forcing checks on all API calls for server failure.\r\n }\r\n\r\n return response.text().then(handleJsonText);\r\n }\r\n\r\n return fetch(url, init).then(handleResponse);\r\n}\r\n\r\nexport function fetchJson(input: string | Request, init?: RequestInit) {\r\n\r\n const getHeaders = { 'accept': 'application/json' }\r\n const getInit: RequestInit = { method: 'get', credentials: 'same-origin', headers: getHeaders };\r\n\r\n if (init) {\r\n let headers = init.headers ? { ...getHeaders, ...init.headers } : getHeaders;\r\n init = { ...getInit, ...init, headers }\r\n } else {\r\n init = getInit;\r\n }\r\n\r\n function handleResponse(response: Response) {\r\n function handleJsonText(text: string): T {\r\n if (text) {\r\n try {\r\n var json = JSON.parse(text);\r\n } catch (e) {\r\n if (response.ok) {\r\n throw new Error(\"Error parsing JSON: \" + e + \"Response: \" + text);\r\n } else {\r\n throw new Error(\"Error(\" + response.status + \"): \" + (text || response.statusText));\r\n }\r\n }\r\n\r\n if (response.ok) return json;\r\n throw json;\r\n }\r\n\r\n if (!response.ok) {\r\n throw new Error(\"Error(\" + response.status + \"): \" + (response.statusText));\r\n }\r\n\r\n return null as any as T; // Small type hack to NOT have to include null in the signature, forcing checks on all API calls for server failure.\r\n }\r\n\r\n return response.text().then(handleJsonText);\r\n }\r\n\r\n return fetch(input, init).then(handleResponse)\r\n}\r\n\r\nexport function verifyNotNull(data: Promise) {\r\n return data.then(v => {\r\n if (v === null)\r\n throw new Error(\"Received empty result\");\r\n\r\n return v;\r\n })\r\n}\r\n\r\ntype MappedTypeSource = { [P in string]?: string }\r\ntype ValueOf = T[keyof T];\r\ntype KeyValueTupleToObject = { [K in Extract]: Extract[1] }\r\ntype KeyValueTupleFromObject = ValueOf<{ [K in keyof T]: [T[K], P] }>;\r\ntype ObjectFromValues = KeyValueTupleToObject>\r\n\r\ntype ModelDateMapBase = { [P in keyof TSource]?: DateFieldMapBase }\r\n\r\ntype DateFieldMapBase = {\r\n date?: string;\r\n time?: string;\r\n datetime?: string;\r\n}\r\n\r\ntype ModelDateMap }> = {\r\n [P in keyof TMap]: P extends keyof TSource ? DateFieldMap : never\r\n}\r\n\r\ntype DateFieldMap = {\r\n date?: keyof Subtract;\r\n time?: keyof Subtract;\r\n datetime?: keyof Subtract;\r\n}\r\n\r\nexport type WithDates> = Omit & { [P in keyof TMap]: TSource[P] extends string ? moment.Moment : (moment.Moment | null) };\r\n\r\nexport function getDates>(object: Readonly, props: K): { [P in keyof K]: T[P] extends string ? moment.Moment : (moment.Moment | null) } {\r\n type resultType

= T[P] extends string ? moment.Moment : moment.Moment | null;\r\n let result = {} as { [P in keyof K]: resultType

};\r\n for (var k in props) {\r\n result[k] = ((object[k] && moment.utc(object[k])) || null) as resultType;\r\n }\r\n return result;\r\n}\r\n\r\n\r\n//type dateFormat = 'MM/dd/yyyy' | 'MM-dd-yyyy' | 'M/d/yyyy' | 'yyyy-MM-dd' | 'yyyy-M-d' | 'yyyy/MM/dd' | 'yyyy/M/d' | \r\n\r\n// Date Map-- maps C# to jquery and moment formats (08/13/18 RKH: backlog #12359)\r\nconst dateMap = {\r\n\r\n 'MM/dd/yyyy': {\r\n momentFormat: 'MM/DD/YYYY',\r\n jqueryFormat: 'mm/dd/yy'\r\n },\r\n 'MM-dd-yyyy': {\r\n momentFormat: 'MM-DD-YYYY',\r\n jqueryFormat: 'mm-dd-yy'\r\n },\r\n\r\n 'M/d/yyyy': {\r\n momentFormat: 'M/D/YYYY',\r\n jqueryFormat: 'm/d/yy'\r\n },\r\n 'yyyy-MM-dd': {\r\n momentFormat: 'YYYY-MM-DD',\r\n jqueryFormat: 'yy-mm-dd'\r\n },\r\n 'yyyy-M-d': {\r\n momentFormat: 'YYYY-M-D',\r\n jqueryFormat: 'yy-m-d'\r\n },\r\n 'yyyy/MM/dd': {\r\n momentFormat: 'YYYY/MM/DD',\r\n jqueryFormat: 'yy/mm/dd'\r\n },\r\n\r\n 'yyyy/M/d': {\r\n momentFormat: 'YYYY/M/D',\r\n jqueryFormat: 'yy/m/d'\r\n },\r\n 'yyyy.MM.dd.': {\r\n momentFormat: 'YYYY.MM.DD.',\r\n jqueryFormat: 'yy.mm.dd.'\r\n },\r\n 'yyyy.M.d': {\r\n momentFormat: 'YYYY.M.D',\r\n jqueryFormat: 'yy.m.d'\r\n },\r\n 'yyyy.d.M': {\r\n momentFormat: 'YYYY.D.M',\r\n jqueryFormat: 'yy.d.m'\r\n },\r\n 'yyyy. M. d': {\r\n momentFormat: 'YYYY. M. D',\r\n jqueryFormat: 'mm-dd-yy'\r\n },\r\n 'yyyy?M?d?': {\r\n momentFormat: 'YYYY?M?D?',\r\n jqueryFormat: 'yy?m?d?'\r\n },\r\n 'd.M.yyyy': {\r\n momentFormat: 'D.M.YYYY',\r\n jqueryFormat: 'd.m.yy'\r\n },\r\n 'd.MM.yyyy': {\r\n momentFormat: 'D.MM.YYYY',\r\n jqueryFormat: 'd.mm.yy'\r\n },\r\n 'd/M/yyyy': {\r\n momentFormat: 'D/M/YYYY',\r\n jqueryFormat: 'd/m/yy'\r\n },\r\n 'd/MM/yyyy': {\r\n momentFormat: 'D/MM/YYYY',\r\n jqueryFormat: 'd/mm/yy'\r\n },\r\n 'dd.MM.yyyy': {\r\n momentFormat: 'DD.MM.YYYY',\r\n jqueryFormat: 'dd.mm.yy'\r\n },\r\n 'dd/MM/yyyy': {\r\n momentFormat: 'DD/MM/YYYY',\r\n jqueryFormat: 'dd/mm/yy'\r\n },\r\n 'dd-MM-yyyy': {\r\n momentFormat: 'DD-MM-YYYY',\r\n jqueryFormat: 'dd-mm-yy'\r\n },\r\n 'd-M-yyyy': {\r\n momentFormat: 'D-M-YYYY',\r\n jqueryFormat: 'd-m-yy'\r\n },\r\n}\r\ntype dateFormat = keyof typeof dateMap;\r\n\r\n//array of valid moment format's incl. times, used by formatDate function to declare valid formats so moment does not throw js date deprication warning (09/14/18 RKH: backlog #12359-- dynamic date formatting)\r\nvar momentFormatArray = [\r\n 'MM/DD/YYYY',\r\n 'MM/DD/YYYY HH:mm',\r\n 'MM/DD/YYYY hh:mm a',\r\n 'MM/DD/YYYY h:mm a',\r\n 'MM/DD/YYYY hh:mm A',\r\n 'MM/DD/YYYY h:mm A',\r\n\r\n 'MM-DD-YYYY',\r\n 'MM-DD-YYYY HH:mm',\r\n 'MM-DD-YYYY hh:mm a',\r\n 'MM-DD-YYYY h:mm a',\r\n 'MM-DD-YYYY hh:mm A',\r\n 'MM-DD-YYYY h:mm A',\r\n\r\n 'M/D/YYYY',\r\n 'M/D/YYYY HH:mm',\r\n 'M/D/YYYY hh:mm a',\r\n 'M/D/YYYY h:mm a',\r\n 'M/D/YYYY hh:mm A',\r\n 'M/D/YYYY h:mm A',\r\n\r\n 'YYYY-MM-DD',\r\n 'YYYY-MM-DD HH:mm',\r\n 'YYYY-MM-DD hh:mm a',\r\n 'YYYY-MM-DD h:mm a',\r\n 'YYYY-MM-DD hh:mm A',\r\n 'YYYY-MM-DD h:mm A',\r\n\r\n 'YYYY-M-D',\r\n 'YYYY-M-D HH:mm',\r\n 'YYYY-M-D hh:mm a',\r\n 'YYYY-M-D h:mm a',\r\n 'YYYY-M-D hh:mm A',\r\n 'YYYY-M-D h:mm A',\r\n\r\n 'YYYY/MM/DD',\r\n 'YYYY/MM/DD HH:mm',\r\n 'YYYY/MM/DD hh:mm a',\r\n 'YYYY/MM/DD h:mm a',\r\n 'YYYY/MM/DD hh:mm A',\r\n 'YYYY/MM/DD h:mm A',\r\n\r\n 'YYYY/M/D',\r\n 'YYYY/M/D HH:mm',\r\n 'YYYY/M/D hh:mm a',\r\n 'YYYY/M/D h:mm a',\r\n 'YYYY/M/D hh:mm A',\r\n 'YYYY/M/D h:mm A',\r\n\r\n 'YYYY.MM.DD.',\r\n 'YYYY.MM.DD. HH:mm',\r\n 'YYYY.MM.DD. hh:mm a',\r\n 'YYYY.MM.DD. h:mm a',\r\n 'YYYY.MM.DD. hh:mm A',\r\n 'YYYY.MM.DD. h:mm A',\r\n\r\n 'YYYY.M.D',\r\n 'YYYY.M.D HH:mm',\r\n 'YYYY.M.D hh:mm a',\r\n 'YYYY.M.D h:mm a',\r\n 'YYYY.M.D hh:mm A',\r\n 'YYYY.M.D h:mm A',\r\n\r\n 'YYYY.D.M',\r\n 'YYYY.D.M HH:mm',\r\n 'YYYY.D.M hh:mm a',\r\n 'YYYY.D.M h:mm a',\r\n 'YYYY.D.M hh:mm A',\r\n 'YYYY.D.M h:mm A',\r\n\r\n 'YYYY. M. D',\r\n 'YYYY. M. D HH:mm',\r\n 'YYYY. M. D hh:mm a',\r\n 'YYYY. M. D h:mm a',\r\n 'YYYY. M. D hh:mm A',\r\n 'YYYY. M. D h:mm A',\r\n\r\n 'YYYY?M?D?',\r\n 'YYYY?M?D? HH:mm',\r\n 'YYYY?M?D? hh:mm a',\r\n 'YYYY?M?D? h:mm a',\r\n 'YYYY?M?D? hh:mm A',\r\n 'YYYY?M?D? h:mm A',\r\n\r\n 'D.M.YYYY',\r\n 'D.M.YYYY HH:mm',\r\n 'D.M.YYYY hh:mm a',\r\n 'D.M.YYYY h:mm a',\r\n 'D.M.YYYY hh:mm A',\r\n 'D.M.YYYY h:mm A',\r\n\r\n 'D.MM.YYYY',\r\n 'D.MM.YYYY HH:mm',\r\n 'D.MM.YYYY hh:mm a',\r\n 'D.MM.YYYY h:mm a',\r\n 'D.MM.YYYY hh:mm A',\r\n 'D.MM.YYYY h:mm A',\r\n\r\n 'D/M/YYYY',\r\n 'D/M/YYYY HH:mm',\r\n 'D/M/YYYY hh:mm a',\r\n 'D/M/YYYY h:mm a',\r\n 'D/M/YYYY hh:mm A',\r\n 'D/M/YYYY h:mm A',\r\n\r\n 'D/MM/YYYY',\r\n 'D/MM/YYYY HH:mm',\r\n 'D/MM/YYYY hh:mm a',\r\n 'D/MM/YYYY h:mm a',\r\n 'D/MM/YYYY hh:mm A',\r\n 'D/MM/YYYY h:mm A',\r\n\r\n 'DD.MM.YYYY',\r\n 'DD.MM.YYYY HH:mm',\r\n 'DD.MM.YYYY hh:mm a',\r\n 'DD.MM.YYYY h:mm a',\r\n 'DD.MM.YYYY hh:mm A',\r\n 'DD.MM.YYYY h:mm A',\r\n\r\n 'DD/MM/YYYY',\r\n 'DD/MM/YYYY HH:mm',\r\n 'DD/MM/YYYY hh:mm a',\r\n 'DD/MM/YYYY h:mm a',\r\n 'DD/MM/YYYY hh:mm A',\r\n 'DD/MM/YYYY h:mm A',\r\n\r\n 'DD-MM-YYYY',\r\n 'DD-MM-YYYY HH:mm',\r\n 'DD-MM-YYYY hh:mm a',\r\n 'DD-MM-YYYY h:mm a',\r\n 'DD-MM-YYYY hh:mm A',\r\n 'DD-MM-YYYY h:mm A',\r\n\r\n 'D-M-YYYY',\r\n 'D-M-YYYY HH:mm',\r\n 'D-M-YYYY hh:mm a',\r\n 'D-M-YYYY h:mm a',\r\n 'D-M-YYYY hh:mm A',\r\n 'D-M-YYYY h:mm A'\r\n]\r\n\r\nexport enum FormatType {\r\n Date = 1,\r\n DateTime24 = 2,\r\n DateTime12 = 3,\r\n DateServer = 4,\r\n DateTime24Server = 5,\r\n DateTime12Server = 6,\r\n}\r\n\r\n//format a date to the user or server formats using moment (08/13/18 RKH: backlog #12359)\r\n// type = 1 Date Only, 2 = Date and Time, 3 = Date Time and AmPm, 4 - Date Server Format 5 = Date Time Server Format, 6 = Date Time am/pm Server format, 7 = custom format\r\nexport function formatDate(value: string, formatType: FormatType, valueFormat: string |string[], dateFormat?: dateFormat): string {\r\n\r\n //trap empty value\r\n if (value === '')\r\n return '';\r\n\r\n //if input format unknown-- passing array of moment formats prevents moment from falling back to js date and throwing a deprication error\r\n valueFormat = valueFormat || momentFormatArray;\r\n dateFormat = dateFormat || 'MM/dd/yyyy';\r\n\r\n //trap value format not being passed in\r\n if (valueFormat === undefined) {\r\n valueFormat = \"\";\r\n }\r\n\r\n //format value based on type\r\n switch (formatType) {\r\n case FormatType.Date:\r\n return moment.default(value, valueFormat).format(dateMap[dateFormat].momentFormat);\r\n case FormatType.DateTime24:\r\n //input format known-- prevents moment deprication warning, moment does not fall back to js.date\r\n return moment.default(value, valueFormat).format(dateMap[dateFormat].momentFormat + \" HH:mm\");\r\n case FormatType.DateTime12:\r\n return moment.default(value, valueFormat).format(dateMap[dateFormat].momentFormat + \" hh:mm a\");\r\n case FormatType.DateServer:\r\n return moment.default(value, valueFormat).format('YYYY-MM-DD');\r\n case FormatType.DateTime24Server:\r\n return moment.default(value, valueFormat).format(\"YYYY-MM-DD HH:mm\");\r\n case FormatType.DateTime12Server:\r\n return moment.default(value, valueFormat).format(\"YYYY-MM-DD hh:mm a\");\r\n default:\r\n return \"\";\r\n }\r\n}\r\n\r\nconst defaultDateStringMap: {\r\n time: 'time',\r\n date: 'date',\r\n datetime: 'datetime'\r\n} = {\r\n time: 'time',\r\n date: 'date',\r\n datetime: 'datetime'\r\n}\r\n\r\nexport function getDateStrings(date: moment.Moment | null, map?: TMap): ObjectFromValues;\r\nexport function getDateStrings(data: TData, map: TMap, key: K): ObjectFromValues;\r\nexport function getDateStrings(data:any, map:any, key?:any) {\r\n\r\n var props;\r\n var date;\r\n\r\n if (key !== undefined) {\r\n props = map[key];\r\n date = data[key];\r\n } else {\r\n props = map || defaultDateStringMap;\r\n date = data;\r\n }\r\n\r\n var result = {} as { [key: string]: string | null };\r\n props.date && (result[props.date] = date ? formatDate(date, 1, '') : null); //(12/13/18 RKH: backlog #12359-- dynamic date formatting)\r\n props.time && (result[props.time] = date ? date.format('HH:mm') : null);\r\n\tprops.datetime && (result[props.datetime] = date ? formatDate(date, 2, '') : null); //(12/13/18 RKH: backlog #12359-- dynamic date formatting)\r\n return result; \r\n} \r\n\r\nexport function getOffsetFromParent(child: HTMLElement, parent: Element) {\r\n var result = { x: 0, y: 0 };\r\n while (child && child !== parent) {\r\n result.x += child.offsetLeft;\r\n result.y += child.offsetTop;\r\n child = child.offsetParent as HTMLElement;\r\n }\r\n\r\n return result;\r\n}","import { Location } from '../components/googlemaps/location';\r\nimport { WithDates, getDates, getDateStrings, fetchJson } from '../util';\r\n\r\ninterface FlightLegModel {\r\n organizationLogo: string | null,\r\n tailNumber: string\r\n aircraftTypeName: string,\r\n aircraftTypeCode: string,\r\n flightAwareFlightIds: string[],\r\n departureLocation?: Location;\r\n arrivalLocation?: Location;\r\n departure?: string,\r\n departureCity?: string,\r\n departureState?: string,\r\n departureCountry?: string,\r\n arrival?: string,\r\n arrivalCity?: string,\r\n arrivalState?: string,\r\n arrivalCountry: string,\r\n flightAwareArrivalUTC?: string;\r\n flightAwareArrivalLocal?: string;\r\n flightAwareDepartureUTC?: string;\r\n flightAwareDepartureLocal?: string;\r\n flightAwareEstimatedArrivalUTC?: string;\r\n flightAwareEstimatedArrivalLocal?: string;\r\n flightAwareEstimatedDepartureUTC?: string;\r\n flightAwareEstimatedDepartureLocal?: string;\r\n scheduledArrivalUTC?: string;\r\n scheduledArrivalLocal?: string;\r\n scheduledDepartureUTC?: string;\r\n scheduledDepartureLocal?: string; \r\n arrivalTimeZoneOffset?: number;\r\n departureTimeZoneOffset?: number;\r\n expired: boolean;\r\n}\r\n\r\ninterface FlightLegModelDates {\r\n flightAwareEstimatedArrivalUTC: {\r\n date: 'flightAwareEstimatedArrivalDateUTC',\r\n time: 'flightAwareEstimatedArrivalTimeUTC'\r\n },\r\n flightAwareEstimatedArrivalLocal: {\r\n date: 'flightAwareEstimatedArrivalDateLocal',\r\n time: 'flightAwareEstimatedArrivalTimeLocal'\r\n },\r\n scheduledArrivalUTC: {\r\n date: 'scheduledArrivalDateUTC',\r\n time: 'scheduledArrivalTimeUTC'\r\n },\r\n scheduledArrivalLocal: {\r\n date: 'scheduledArrivalDateLocal',\r\n time: 'scheduledArrivalTimeLocal'\r\n },\r\n flightAwareArrivalUTC: {\r\n date: 'flightAwareArrivalDateUTC',\r\n time: 'flightAwareArrivalTimeUTC'\r\n },\r\n flightAwareArrivalLocal: {\r\n date: 'flightAwareArrivalDateLocal',\r\n time: 'flightAwareArrivalTimeLocal'\r\n }, \r\n flightAwareEstimatedDepartureUTC: {\r\n date: 'flightAwareEstimatedDepartureDateUTC',\r\n time: 'flightAwareEstimatedDepartureTimeUTC'\r\n },\r\n flightAwareEstimatedDepartureLocal: {\r\n date: 'flightAwareEstimatedDepartureDateLocal',\r\n time: 'flightAwareEstimatedDepartureTimeLocal'\r\n }, \r\n scheduledDepartureUTC: {\r\n date: 'scheduledDepartureDateUTC',\r\n time: 'scheduledDepartureTimeUTC'\r\n },\r\n scheduledDepartureLocal: {\r\n date: 'scheduledDepartureDateLocal',\r\n time: 'scheduledDepartureTimeLocal'\r\n }\r\n flightAwareDepartureUTC: {\r\n date: 'flightAwareDepartureDateUTC',\r\n time: 'flightAwareDepartureTimeUTC'\r\n },\r\n flightAwareDepartureLocal: {\r\n date: 'flightAwareDepartureDateLocal',\r\n time: 'flightAwareDepartureTimeLocal'\r\n },\r\n}\r\n\r\nconst FlightLegModelDates: FlightLegModelDates = {\r\n flightAwareEstimatedArrivalUTC: {\r\n date: 'flightAwareEstimatedArrivalDateUTC',\r\n time: 'flightAwareEstimatedArrivalTimeUTC'\r\n },\r\n flightAwareEstimatedArrivalLocal: {\r\n date: 'flightAwareEstimatedArrivalDateLocal',\r\n time: 'flightAwareEstimatedArrivalTimeLocal'\r\n }, \r\n scheduledArrivalUTC: {\r\n date: 'scheduledArrivalDateUTC',\r\n time: 'scheduledArrivalTimeUTC'\r\n },\r\n scheduledArrivalLocal: {\r\n date: 'scheduledArrivalDateLocal',\r\n time: 'scheduledArrivalTimeLocal'\r\n },\r\n flightAwareArrivalUTC: {\r\n date: 'flightAwareArrivalDateUTC',\r\n time: 'flightAwareArrivalTimeUTC'\r\n },\r\n flightAwareArrivalLocal: {\r\n date: 'flightAwareArrivalDateLocal',\r\n time: 'flightAwareArrivalTimeLocal'\r\n },\r\n flightAwareEstimatedDepartureUTC: {\r\n date: 'flightAwareEstimatedDepartureDateUTC',\r\n time: 'flightAwareEstimatedDepartureTimeUTC'\r\n },\r\n flightAwareEstimatedDepartureLocal: {\r\n date: 'flightAwareEstimatedDepartureDateLocal',\r\n time: 'flightAwareEstimatedDepartureTimeLocal'\r\n }, \r\n scheduledDepartureUTC: {\r\n date: 'scheduledDepartureDateUTC',\r\n time: 'scheduledDepartureTimeUTC'\r\n },\r\n scheduledDepartureLocal: {\r\n date: 'scheduledDepartureDateLocal',\r\n time: 'scheduledDepartureTimeLocal'\r\n },\r\n flightAwareDepartureUTC: {\r\n date: 'flightAwareDepartureDateUTC',\r\n time: 'flightAwareDepartureTimeUTC'\r\n },\r\n flightAwareDepartureLocal: {\r\n date: 'flightAwareDepartureDateLocal',\r\n time: 'flightAwareDepartureTimeLocal'\r\n },\r\n}\r\n\r\nexport interface FlightLegViewModel extends WithDates {\r\n flightAwareEstimatedArrivalDateLocal: string | null;\r\n flightAwareEstimatedArrivalTimeLocal: string | null,\r\n flightAwareEstimatedArrivalDateUTC: string | null;\r\n flightAwareEstimatedArrivalTimeUTC: string | null,\r\n flightAwareArrivalDateLocal: string | null,\r\n flightAwareArrivalTimeLocal: string | null,\r\n flightAwareArrivalDateUTC: string | null,\r\n flightAwareArrivalTimeUTC: string | null,\r\n scheduledArrivalDateLocal: string,\r\n scheduledArrivalTimeLocal: string,\r\n scheduledArrivalDateUTC: string,\r\n scheduledArrivalTimeUTC: string,\r\n\r\n flightAwareEstimatedDepartureDateLocal: string | null;\r\n flightAwareEstimatedDepartureTimeLocal: string | null,\r\n flightAwareEstimatedDepartureDateUTC: string | null;\r\n flightAwareEstimatedDepartureTimeUTC: string | null,\r\n flightAwareDepartureDateLocal: string | null,\r\n flightAwareDepartureTimeLocal: string | null,\r\n flightAwareDepartureDateUTC: string | null;\r\n flightAwareDepartureTimeUTC: string | null,\r\n scheduledDepartureDateLocal: string,\r\n scheduledDepartureTimeLocal: string,\r\n scheduledDepartureDateUTC: string,\r\n scheduledDepartureTimeUTC: string,\r\n}\r\n\r\nfunction map(model: FlightLegModel): FlightLegViewModel {\r\n const dates = getDates(model, FlightLegModelDates);\r\n return {\r\n ...model,\r\n ...dates,\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareEstimatedArrivalUTC'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareEstimatedArrivalLocal'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareEstimatedDepartureUTC'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareEstimatedDepartureLocal'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'scheduledArrivalUTC'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'scheduledArrivalLocal'), \r\n ...getDateStrings(dates, FlightLegModelDates, 'scheduledDepartureUTC'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'scheduledDepartureLocal'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareDepartureUTC'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareDepartureLocal'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareArrivalUTC'),\r\n ...getDateStrings(dates, FlightLegModelDates, 'flightAwareArrivalLocal')\r\n }\r\n}\r\n\r\nexport function fetch(url: string) {\r\n return fetchJson(url)\r\n .then(map);\r\n}\r\n\r\nexport function fetchMany(url: string) {\r\n return fetchJson(url)\r\n .then(m => m.map(map));\r\n}","import * as PropTypes from 'prop-types';\r\n\r\nexport type Location = { latitude: number, longitude: number } | google.maps.LatLng | google.maps.LatLngLiteral;\r\n\r\nexport const locationPropTypeShape = {\r\n latitude: PropTypes.number.isRequired,\r\n longitude: PropTypes.number.isRequired\r\n};\r\n\r\n\r\nexport const locationPropType = PropTypes.shape(locationPropTypeShape);\r\n\r\n// Location mapping between ours and google's\r\nexport function mapLocation(position: Location): google.maps.LatLngLiteral | google.maps.LatLng\r\nexport function mapLocation(position: Location[]): google.maps.LatLngLiteral[] | google.maps.LatLng[]\r\n\r\nexport function mapLocation(input: Location[] | Location): (google.maps.LatLngLiteral | google.maps.LatLng) | ((google.maps.LatLngLiteral | google.maps.LatLng)[]) {\r\n const map = (p: Location) => p && (isLocation(p) ? { lat: p.latitude, lng: p.longitude } : p);\r\n\r\n if (input instanceof Array) {\r\n return input.map(map);\r\n }\r\n return map(input);\r\n}\r\n\r\nfunction isLocation(input: google.maps.LatLngLiteral | google.maps.LatLng | Location): input is { latitude: number, longitude: number } {\r\n return (input as any).latitude !== undefined;\r\n}","export enum MessageType {\r\n Departure = \"departure\",\r\n Arrival = \"arrival\",\r\n Onblock = \"onblock\",\r\n Offblock = \"offblock\",\r\n Position = \"position\",\r\n Flightplan = \"flightplan\",\r\n Cancellation = \"cancellation\"\r\n}\r\n\r\nexport enum FlightStatus {\r\n Scheduled = \"scheduled\",\r\n Filed = \"filed\",\r\n Active = \"active\",\r\n Completed = \"completed\",\r\n Cancelled = \"cancelled\"\r\n}\r\n\r\nexport enum TimeType {\r\n Actual = \"actual\",\r\n Estimated = \"estimated\",\r\n Enroute = \"enroute\"\r\n}\r\n\r\nexport interface MessageBase {\r\n messageType: MessageType;\r\n flightAwareFlightId: string;\r\n flightIdentifier: string;\r\n pitr: string;\r\n}\r\n\r\nexport interface Waypoint {\r\n latitude: number;\r\n longitude: number;\r\n time?: string;\r\n name?: string;\r\n altitude?: number;\r\n groundSpeed?: number;\r\n}\r\n\r\ninterface ReportedByFacility {\r\n facilityHash?: string;\r\n facilityName?: string;\r\n}\r\n\r\ninterface HasIdentifiers {\r\n atcIdentifier?: string;\r\n aircraftRegistration?: string;\r\n}\r\n\r\ninterface HasEstimatedTimes {\r\n estimatedDepartureTime?: string;\r\n estimatedArrivalTime?: string;\r\n enRouteTime?: string;\r\n}\r\n\r\ninterface HasPosition {\r\n latitude?: number;\r\n longitude?: number;\r\n}\r\n\r\ninterface HasOriginDestination {\r\n origin?: string;\r\n destination?: string;\r\n}\r\n\r\nexport interface FlightPlan extends MessageBase, ReportedByFacility, HasEstimatedTimes, HasIdentifiers, HasPosition, HasOriginDestination {\r\n messageType: MessageType.Flightplan;\r\n filedDepartureTime: string;\r\n flightStatus: FlightStatus;\r\n fourDWaypoints?: Waypoint[];\r\n aircraftType?: string;\r\n cruisingAltitude?: number;\r\n predictedETA?: string;\r\n predictedETAMethod?: string;\r\n groundSpeed?: number;\r\n transponderModeSCode?: string;\r\n prefix?: string;\r\n suffix?: string;\r\n route?: string;\r\n filedCruisingSpeed?: number;\r\n trueCancel?: boolean;\r\n waypoints?: Waypoint[];\r\n}\r\n\r\nexport interface Departure extends MessageBase, ReportedByFacility, HasEstimatedTimes, HasIdentifiers, HasOriginDestination {\r\n messageType: MessageType.Departure;\r\n departureTime: string;\r\n origin: string;\r\n arrivalTime?: string;\r\n aircraftType?: string;\r\n isSynthetic?: boolean;\r\n departureTimeType: TimeType;\r\n}\r\n\r\nexport interface Arrival extends MessageBase, ReportedByFacility, HasEstimatedTimes, HasIdentifiers, HasOriginDestination {\r\n messageType: MessageType.Arrival;\r\n arrivalTime: string;\r\n arrivalTimeType: TimeType;\r\n isSynthetic?: boolean;\r\n}\r\n\r\nexport interface Cancellation extends MessageBase, ReportedByFacility, HasEstimatedTimes, HasIdentifiers, HasOriginDestination {\r\n messageType: MessageType.Cancellation;\r\n origin: string;\r\n aircraftType?: string;\r\n filedCruisingAltitude?: number;\r\n filedDepartureTime?: string;\r\n groundSpeed?: number;\r\n transponderModeSCode?: string;\r\n route?: string;\r\n filedCruisingSpeed?: number;\r\n flightStatus?: FlightStatus;\r\n trueCancel?: boolean;\r\n waypoints?: Waypoint[]\r\n}\r\n\r\nexport enum AirGround {\r\n Air = \"air\",\r\n Ground = \"ground\"\r\n}\r\n\r\nexport enum UpdateType {\r\n AdsB = \"adsB\",\r\n Radar = \"radar\",\r\n Transoceanic = \"transoceanic\",\r\n Estimated = \"estimated\",\r\n Datalink = \"datalink\",\r\n Multilateration = \"multilateration\",\r\n AsdeX = \"asdeX\",\r\n SpaceAdsB = \"spaceAdsB\"\r\n}\r\n\r\nexport enum AltitudeChange {\r\n Climbing = \"climbing\",\r\n Descending = \"descending\"\r\n}\r\n\r\nexport interface Position extends MessageBase, HasIdentifiers, HasEstimatedTimes, HasOriginDestination {\r\n messageType: MessageType.Position;\r\n airGround: AirGround;\r\n reportTime: string;\r\n facilityHash: string;\r\n facilityName: string;\r\n latitude: number;\r\n longitude: number;\r\n updateType: UpdateType;\r\n aircraftType?: string;\r\n altitude?: number;\r\n altitudeChange?: AltitudeChange\r\n barometricAltitude?: number;\r\n fuelOnBoard?: number;\r\n gpsAltitude?: number;\r\n groundspeed?: number;\r\n heading?: number;\r\n transponderModeSCode?: string;\r\n outsideAirTemperature?: number;\r\n nextExpectedReportAltitude?: number;\r\n nextExpectedReportTime?: string;\r\n nextExpectedReportLatitude?: number;\r\n nextExpectedReportLongitude?: number;\r\n filedCruisingSpeed?: number;\r\n transponderSquawkCode?: string;\r\n waypoints?: Waypoint[];\r\n winds?: string;\r\n}\r\n\r\nexport interface OffBlock extends MessageBase, HasOriginDestination, ReportedByFacility {\r\n messageType: MessageType.Offblock;\r\n reportTime: string;\r\n}\r\n\r\nexport interface OnBlock extends MessageBase, HasOriginDestination, ReportedByFacility {\r\n messageType: MessageType.Onblock;\r\n reportTime: string;\r\n}\r\n\r\nexport type FlightMessage = Departure | Arrival | OnBlock | OffBlock | Position | FlightPlan | Cancellation;","import * as React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { locationPropType, locationPropTypeShape } from '../components/googlemaps/location';\r\nimport { FlightAwareHub } from './flightawarehub';\r\nimport * as flightAwareMessages from '../models/flightawaremessages'\r\nimport { Location } from '../components/googlemaps/location'\r\nimport * as moment from 'moment';\r\nimport { getDateStrings } from '../util';\r\n\r\ninterface FlightAwareTimes {\r\n flightAwareArrivalUTC: moment.Moment | null;\r\n flightAwareArrivalLocal: moment.Moment | null;\r\n flightAwareEstimatedArrivalUTC: moment.Moment | null;\r\n flightAwareEstimatedArrivalLocal: moment.Moment | null;\r\n\r\n flightAwareArrivalDateUTC: string | null;\r\n flightAwareArrivalTimeUTC: string | null;\r\n flightAwareArrivalDateLocal: string | null;\r\n flightAwareArrivalTimeLocal: string | null;\r\n\r\n flightAwareEstimatedArrivalDateUTC: string | null;\r\n flightAwareEstimatedArrivalTimeUTC: string | null;\r\n flightAwareEstimatedArrivalDateLocal: string | null;\r\n flightAwareEstimatedArrivalTimeLocal: string | null;\r\n\r\n flightAwareDepartureUTC: moment.Moment | null;\r\n flightAwareDepartureLocal: moment.Moment | null;\r\n flightAwareEstimatedDepartureUTC: moment.Moment | null;\r\n flightAwareEstimatedDepartureLocal: moment.Moment | null;\r\n\r\n flightAwareDepartureDateUTC: string | null;\r\n flightAwareDepartureTimeUTC: string | null;\r\n flightAwareDepartureDateLocal: string | null;\r\n flightAwareDepartureTimeLocal: string | null;\r\n\r\n flightAwareEstimatedDepartureDateUTC: string | null;\r\n flightAwareEstimatedDepartureTimeUTC: string | null;\r\n flightAwareEstimatedDepartureDateLocal: string | null;\r\n flightAwareEstimatedDepartureTimeLocal: string | null;\r\n enRouteTime?: string | null; \r\n expired: boolean;\r\n}\r\n\r\nexport interface FlightAwareFlightLeg extends FlightAwareTimes {\r\n flight?: Location[],\r\n plan?: Location[],\r\n position?: flightAwareMessages.Position,\r\n}\r\n\r\nexport const flightAwareTrackingPropTypeShape = {\r\n flight: PropTypes.arrayOf(locationPropType),\r\n plan: PropTypes.arrayOf(locationPropType),\r\n position: PropTypes.shape({\r\n messageType: PropTypes.oneOf([\"position\"]),\r\n heading: PropTypes.number,\r\n ...locationPropTypeShape\r\n })\r\n}\r\n\r\ninterface FlightAwareTrackingProps extends FlightAwareTimes{\r\n flightAwareHub?: FlightAwareHub,\r\n flightAwareFlightIds: string[],\r\n arrivalTimeZoneOffset?: number;\r\n departureTimeZoneOffset?: number;\r\n}\r\n\r\nexport type TrackedFlightLegProps

= FlightAwareTrackingProps & Subtract>\r\n\r\nexport function withFlightAwareTracking

(WrappedComponent: React.ComponentType

) {\r\n return class WithFlightAwareTracking extends React.Component, FlightAwareFlightLeg> {\r\n\r\n static propTypes = {\r\n flightAwareHub: PropTypes.instanceOf(FlightAwareHub),\r\n flightAwareFlightIds: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n onUpdated: PropTypes.func\r\n }\r\n\r\n static displayName = `WithFlightAwareTracking(${WrappedComponent.displayName})`;\r\n\r\n state: FlightAwareFlightLeg = {\r\n flightAwareArrivalUTC: this.props.flightAwareArrivalUTC,\r\n flightAwareArrivalLocal: this.props.flightAwareArrivalLocal,\r\n flightAwareArrivalDateUTC: this.props.flightAwareArrivalDateUTC,\r\n flightAwareArrivalTimeUTC: this.props.flightAwareArrivalTimeUTC,\r\n flightAwareArrivalDateLocal: this.props.flightAwareArrivalDateLocal, \r\n flightAwareArrivalTimeLocal: this.props.flightAwareArrivalTimeLocal, \r\n flightAwareEstimatedArrivalUTC: this.props.flightAwareEstimatedArrivalUTC,\r\n flightAwareEstimatedArrivalLocal: this.props.flightAwareEstimatedArrivalLocal,\r\n flightAwareEstimatedArrivalDateUTC: this.props.flightAwareEstimatedArrivalDateUTC,\r\n flightAwareEstimatedArrivalTimeUTC: this.props.flightAwareEstimatedArrivalTimeUTC,\r\n flightAwareEstimatedArrivalDateLocal: this.props.flightAwareEstimatedArrivalDateLocal,\r\n flightAwareEstimatedArrivalTimeLocal: this.props.flightAwareEstimatedArrivalTimeLocal,\r\n\r\n flightAwareDepartureUTC: this.props.flightAwareDepartureUTC,\r\n flightAwareDepartureLocal: this.props.flightAwareDepartureLocal,\r\n flightAwareDepartureDateUTC: this.props.flightAwareDepartureDateUTC,\r\n flightAwareDepartureTimeUTC: this.props.flightAwareDepartureTimeUTC,\r\n flightAwareDepartureDateLocal: this.props.flightAwareDepartureDateLocal,\r\n flightAwareDepartureTimeLocal: this.props.flightAwareDepartureTimeLocal,\r\n flightAwareEstimatedDepartureUTC: this.props.flightAwareEstimatedDepartureUTC,\r\n flightAwareEstimatedDepartureLocal: this.props.flightAwareEstimatedDepartureLocal,\r\n flightAwareEstimatedDepartureDateUTC: this.props.flightAwareEstimatedDepartureDateUTC,\r\n flightAwareEstimatedDepartureTimeUTC: this.props.flightAwareEstimatedDepartureTimeUTC,\r\n flightAwareEstimatedDepartureDateLocal: this.props.flightAwareEstimatedDepartureDateLocal,\r\n flightAwareEstimatedDepartureTimeLocal: this.props.flightAwareEstimatedDepartureTimeLocal,\r\n\r\n expired: this.props.expired\r\n }\r\n\r\n componentDidMount() {\r\n this.props.flightAwareHub && this.props.flightAwareHub.listen(this.props.flightAwareFlightIds, this.onMessages);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setStateTimeout && clearTimeout(this.setStateTimeout);\r\n this.props.flightAwareHub && this.props.flightAwareHub.unlisten(this.props.flightAwareFlightIds, this.onMessages);\r\n }\r\n\r\n private nextState: {\r\n arrivalTime?: string;\r\n departureTime?: string;\r\n estimatedArrivalTime?: string;\r\n estimatedDepartureTime?: string;\r\n enRouteTime?: string;\r\n expired?: boolean;\r\n plan?: Location[];\r\n flight: Location[];\r\n position?: flightAwareMessages.Position;\r\n } = {\r\n flight: []\r\n };\r\n private setStateTimeout?: ReturnType;\r\n\r\n private debouncedSetState = () => {\r\n const {\r\n arrivalTime,\r\n departureTime,\r\n estimatedArrivalTime,\r\n estimatedDepartureTime,\r\n enRouteTime,\r\n expired,\r\n plan,\r\n flight: newFlight,\r\n position\r\n } = this.nextState;\r\n\r\n const {\r\n flightAwareArrivalUTC,\r\n flightAwareDepartureUTC,\r\n flightAwareEstimatedArrivalUTC,\r\n flightAwareEstimatedDepartureUTC, \r\n flight\r\n } = this.state;\r\n\r\n const {\r\n departureTimeZoneOffset,\r\n arrivalTimeZoneOffset\r\n } = this.props;\r\n\r\n if (estimatedArrivalTime) {\r\n let estimatedArrivalTimeUTC = moment.utc(estimatedArrivalTime);\r\n if (!flightAwareEstimatedArrivalUTC || !estimatedArrivalTimeUTC.isSame(flightAwareEstimatedArrivalUTC)) {\r\n var estimatedArrivalTimeLocal: moment.Moment | null = null;\r\n if (arrivalTimeZoneOffset)\r\n estimatedArrivalTimeLocal = moment.utc(estimatedArrivalTime).utcOffset(arrivalTimeZoneOffset!)\r\n var arrivalTimeStringsUTC = getDateStrings(estimatedArrivalTimeUTC);\r\n var arrivalTimeStringsLocal = getDateStrings(estimatedArrivalTimeLocal);\r\n this.setState({\r\n flightAwareEstimatedArrivalUTC: estimatedArrivalTimeUTC,\r\n flightAwareEstimatedArrivalLocal: estimatedArrivalTimeLocal,\r\n flightAwareEstimatedArrivalDateUTC: arrivalTimeStringsUTC.date,\r\n flightAwareEstimatedArrivalTimeUTC: arrivalTimeStringsUTC.time,\r\n flightAwareEstimatedArrivalDateLocal: arrivalTimeStringsLocal.date,\r\n flightAwareEstimatedArrivalTimeLocal: arrivalTimeStringsLocal.time\r\n })\r\n }\r\n }\r\n\r\n if (estimatedDepartureTime) {\r\n let estimatedDepartureTimeUTC = moment.utc(estimatedDepartureTime);\r\n if (!flightAwareEstimatedDepartureUTC || !estimatedDepartureTimeUTC.isSame(flightAwareEstimatedDepartureUTC)) {\r\n var estimatedDepartureTimeLocal: moment.Moment | null = null;\r\n if (departureTimeZoneOffset)\r\n estimatedDepartureTimeLocal = moment.utc(estimatedDepartureTime).utcOffset(departureTimeZoneOffset!);\r\n var departureTimeStringsUTC = getDateStrings(estimatedDepartureTimeUTC);\r\n var departureTimeStringsLocal = getDateStrings(estimatedDepartureTimeLocal);\r\n this.setState({\r\n flightAwareEstimatedDepartureUTC: estimatedDepartureTimeUTC,\r\n flightAwareEstimatedDepartureLocal: estimatedDepartureTimeLocal,\r\n flightAwareEstimatedDepartureDateUTC: departureTimeStringsUTC.date,\r\n flightAwareEstimatedDepartureTimeUTC: departureTimeStringsUTC.time,\r\n flightAwareEstimatedDepartureDateLocal: departureTimeStringsLocal.date,\r\n flightAwareEstimatedDepartureTimeLocal: departureTimeStringsLocal.time\r\n })\r\n }\r\n }\r\n\r\n if (arrivalTime) {\r\n let arrivalTimeUTC = moment.utc(arrivalTime);\r\n if (!flightAwareArrivalUTC || !arrivalTimeUTC.isSame(flightAwareArrivalUTC)) {\r\n var arrivalTimeLocal: moment.Moment | null = null;\r\n if (arrivalTimeZoneOffset)\r\n arrivalTimeLocal = moment.utc(arrivalTime).utcOffset(arrivalTimeZoneOffset!);\r\n var arrivalTimeStringsUTC = getDateStrings(arrivalTimeUTC);\r\n var arrivalTimeStringsLocal = getDateStrings(arrivalTimeLocal);\r\n this.setState({\r\n flightAwareArrivalUTC: arrivalTimeUTC,\r\n flightAwareArrivalLocal: arrivalTimeLocal,\r\n flightAwareArrivalDateUTC: arrivalTimeStringsUTC.date,\r\n flightAwareArrivalTimeUTC: arrivalTimeStringsUTC.time,\r\n flightAwareArrivalDateLocal: arrivalTimeStringsLocal.date,\r\n flightAwareArrivalTimeLocal: arrivalTimeStringsLocal.time\r\n })\r\n }\r\n }\r\n\r\n if (departureTime) {\r\n let departureTimeUTC = moment.utc(departureTime);\r\n if (!flightAwareDepartureUTC || !departureTimeUTC.isSame(flightAwareDepartureUTC)) {\r\n var departureTimeLocal: moment.Moment | null = null;\r\n if (departureTimeZoneOffset)\r\n departureTimeLocal = moment.utc(departureTime).utcOffset(this.props.departureTimeZoneOffset!);\r\n var departureTimeStringsUTC = getDateStrings(departureTimeUTC);\r\n var departureTimeStringsLocal = getDateStrings(departureTimeLocal);\r\n this.setState({\r\n flightAwareDepartureUTC: departureTimeUTC,\r\n flightAwareDepartureLocal: departureTimeLocal,\r\n flightAwareDepartureDateUTC: departureTimeStringsUTC.date,\r\n flightAwareDepartureTimeUTC: departureTimeStringsUTC.time,\r\n flightAwareDepartureDateLocal: departureTimeStringsLocal.date,\r\n flightAwareDepartureTimeLocal: departureTimeStringsLocal.time\r\n })\r\n }\r\n }\r\n\r\n if (expired) {\r\n this.setState({ expired: expired });\r\n }\r\n\r\n if (enRouteTime) {\r\n this.setState({ enRouteTime });\r\n }\r\n\r\n if (plan) {\r\n this.setState({ plan });\r\n }\r\n\r\n if (position) {\r\n this.setState({ position });\r\n }\r\n\r\n if (newFlight.length > 0) {\r\n //// NOT PUSH. The value of the property needs to change, not the contents.\r\n this.setState({ flight: (flight || []).concat(newFlight) })\r\n }\r\n\r\n this.nextState = {\r\n flight:[]\r\n };\r\n this.setStateTimeout = undefined;\r\n }\r\n\r\n private debounceSetState(state: {\r\n arrivalTimeUTC?: string;\r\n departureTimeUTC?: string;\r\n estimatedArrivalTimeUTC?: string;\r\n estimatedDepartureTimeUTC?: string;\r\n enRouteTime?: string;\r\n expired?: boolean;\r\n position?: flightAwareMessages.Position;\r\n plan?: Location[];\r\n flight?: Location;\r\n }) {\r\n this.setStateTimeout && clearTimeout(this.setStateTimeout);\r\n const {\r\n flight,\r\n ...other\r\n } = state;\r\n\r\n if (flight) { \r\n this.nextState.flight.push(flight);\r\n }\r\n\r\n this.nextState = { ...this.nextState, ...other };\r\n this.setStateTimeout = setTimeout(this.debouncedSetState, 200);\r\n }\r\n\r\n componentDidUpdate(prevProps: FlightAwareTrackingProps) {\r\n if (this.props.flightAwareHub !== prevProps.flightAwareHub) {\r\n prevProps.flightAwareHub && prevProps.flightAwareHub.unlisten(this.props.flightAwareFlightIds, this.onMessages);\r\n this.props.flightAwareHub && this.props.flightAwareHub.listen(this.props.flightAwareFlightIds, this.onMessages);\r\n }\r\n }\r\n\r\n private checkExpired() {\r\n if (this.state.flightAwareArrivalUTC) {\r\n var arrivalPlus30 = this.state.flightAwareArrivalUTC.add(30, 'minutes'); \r\n if (moment.utc() > arrivalPlus30) {\r\n this.setExpired();\r\n } else {\r\n var duration = moment.duration(arrivalPlus30.diff(moment.utc()));\r\n setTimeout(\r\n this.setExpired,\r\n duration.asMilliseconds());\r\n }\r\n }\r\n }\r\n\r\n private setExpired() {\r\n this.debounceSetState({ expired: true });\r\n }\r\n\r\n private onMessages = (messages: flightAwareMessages.FlightMessage[]) => {\r\n messages.forEach(m => {\r\n if (m.messageType !== flightAwareMessages.MessageType.Onblock && m.messageType !== flightAwareMessages.MessageType.Offblock) {\r\n if (m.estimatedArrivalTime) {\r\n this.debounceSetState({ estimatedArrivalTimeUTC: m.estimatedArrivalTime })\r\n }\r\n\r\n if (m.estimatedDepartureTime) {\r\n this.debounceSetState({ estimatedDepartureTimeUTC: m.estimatedDepartureTime })\r\n } \r\n }\r\n\r\n\r\n\r\n if (m.messageType === flightAwareMessages.MessageType.Flightplan && m.enRouteTime) {\r\n this.debounceSetState({ enRouteTime : m.enRouteTime })\r\n }\r\n\r\n if (m.messageType === flightAwareMessages.MessageType.Arrival) {\r\n this.debounceSetState({ arrivalTimeUTC: m.arrivalTime });\r\n\r\n this.checkExpired();\r\n }\r\n\r\n if (m.messageType === flightAwareMessages.MessageType.Departure) {\r\n this.debounceSetState({ departureTimeUTC: m.departureTime });\r\n }\r\n\r\n switch (m.messageType) {\r\n case flightAwareMessages.MessageType.Flightplan:\r\n if (m.waypoints) {\r\n this.debounceSetState({\r\n plan: m.waypoints\r\n })\r\n }\r\n break;\r\n case flightAwareMessages.MessageType.Position:\r\n this.debounceSetState({\r\n position: m\r\n });\r\n if (m.updateType !== flightAwareMessages.UpdateType.Estimated) {\r\n this.debounceSetState({ flight: { latitude: m.latitude, longitude: m.longitude } });\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n render() {\r\n const props = {\r\n ...this.props,\r\n ...this.state\r\n };\r\n\r\n //https://github.com/Microsoft/TypeScript/issues/28938\r\n // Have to cast props as any since it can't re-merge to the generic P.\r\n return \r\n }\r\n }\r\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n fluid: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Container = function Container(props) {\n var className = props.className,\n cssModule = props.cssModule,\n fluid = props.fluid,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"fluid\", \"tag\"]);\n\n var classes = mapToCssModules(classNames(className, fluid ? 'container-fluid' : 'container'), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nContainer.propTypes = propTypes;\nContainer.defaultProps = defaultProps;\nexport default Container;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar propTypes = {\n tag: tagPropType,\n noGutters: PropTypes.bool,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n form: PropTypes.bool\n};\nvar defaultProps = {\n tag: 'div'\n};\n\nvar Row = function Row(props) {\n var className = props.className,\n cssModule = props.cssModule,\n noGutters = props.noGutters,\n Tag = props.tag,\n form = props.form,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"noGutters\", \"tag\", \"form\"]);\n\n var classes = mapToCssModules(classNames(className, noGutters ? 'no-gutters' : null, form ? 'form-row' : 'row'), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nRow.propTypes = propTypes;\nRow.defaultProps = defaultProps;\nexport default Row;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport isobject from 'lodash.isobject';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport { mapToCssModules, tagPropType } from './utils';\nvar colWidths = ['xs', 'sm', 'md', 'lg', 'xl'];\nvar stringOrNumberProp = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\nvar columnProps = PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string, PropTypes.shape({\n size: PropTypes.oneOfType([PropTypes.bool, PropTypes.number, PropTypes.string]),\n order: stringOrNumberProp,\n offset: stringOrNumberProp\n})]);\nvar propTypes = {\n tag: tagPropType,\n xs: columnProps,\n sm: columnProps,\n md: columnProps,\n lg: columnProps,\n xl: columnProps,\n className: PropTypes.string,\n cssModule: PropTypes.object,\n widths: PropTypes.array\n};\nvar defaultProps = {\n tag: 'div',\n widths: colWidths\n};\n\nvar getColumnSizeClass = function getColumnSizeClass(isXs, colWidth, colSize) {\n if (colSize === true || colSize === '') {\n return isXs ? 'col' : \"col-\" + colWidth;\n } else if (colSize === 'auto') {\n return isXs ? 'col-auto' : \"col-\" + colWidth + \"-auto\";\n }\n\n return isXs ? \"col-\" + colSize : \"col-\" + colWidth + \"-\" + colSize;\n};\n\nvar Col = function Col(props) {\n var className = props.className,\n cssModule = props.cssModule,\n widths = props.widths,\n Tag = props.tag,\n attributes = _objectWithoutPropertiesLoose(props, [\"className\", \"cssModule\", \"widths\", \"tag\"]);\n\n var colClasses = [];\n widths.forEach(function (colWidth, i) {\n var columnProp = props[colWidth];\n delete attributes[colWidth];\n\n if (!columnProp && columnProp !== '') {\n return;\n }\n\n var isXs = !i;\n\n if (isobject(columnProp)) {\n var _classNames;\n\n var colSizeInterfix = isXs ? '-' : \"-\" + colWidth + \"-\";\n var colClass = getColumnSizeClass(isXs, colWidth, columnProp.size);\n colClasses.push(mapToCssModules(classNames((_classNames = {}, _classNames[colClass] = columnProp.size || columnProp.size === '', _classNames[\"order\" + colSizeInterfix + columnProp.order] = columnProp.order || columnProp.order === 0, _classNames[\"offset\" + colSizeInterfix + columnProp.offset] = columnProp.offset || columnProp.offset === 0, _classNames)), cssModule));\n } else {\n var _colClass = getColumnSizeClass(isXs, colWidth, columnProp);\n\n colClasses.push(_colClass);\n }\n });\n\n if (!colClasses.length) {\n colClasses.push('col');\n }\n\n var classes = mapToCssModules(classNames(className, colClasses), cssModule);\n return React.createElement(Tag, _extends({}, attributes, {\n className: classes\n }));\n};\n\nCol.propTypes = propTypes;\nCol.defaultProps = defaultProps;\nexport default Col;","import React from 'react';\r\nimport { Container, Row, Col } from 'reactstrap';\r\nimport { FlightLegViewModel } from '../../models/flightleg';\r\nimport { withFlightAwareTracking, FlightAwareFlightLeg } from '../../signalr/withflightawaretracking';\r\n\r\ninterface FlightInfoProps extends FlightLegViewModel, FlightAwareFlightLeg {}\r\n\r\nexport const FlightInfo: React.FC = (\r\n {\r\n organizationLogo,\r\n departure,\r\n departureCity,\r\n departureState,\r\n departureCountry,\r\n arrival,\r\n arrivalCity,\r\n arrivalState,\r\n arrivalCountry,\r\n scheduledArrivalTimeUTC,\r\n scheduledArrivalTimeLocal,\r\n flightAwareArrivalTimeUTC,\r\n flightAwareArrivalTimeLocal, \r\n flightAwareEstimatedArrivalTimeUTC, \r\n flightAwareEstimatedArrivalTimeLocal, \r\n scheduledDepartureTimeUTC,\r\n scheduledDepartureTimeLocal,\r\n flightAwareDepartureTimeUTC,\r\n flightAwareDepartureTimeLocal,\r\n flightAwareEstimatedDepartureTimeUTC,\r\n flightAwareEstimatedDepartureTimeLocal,\r\n position,\r\n tailNumber,\r\n aircraftTypeCode,\r\n aircraftTypeName,\r\n enRouteTime\r\n }) => {\r\n\r\n return (\r\n \r\n \r\n \r\n

\r\n {organizationLogo && \"\"}\r\n
\r\n \r\n \r\n
\r\n  \r\n {tailNumber}\r\n
\r\n
\r\n
\r\n {aircraftTypeName} ({aircraftTypeCode})\r\n
\r\n {enRouteTime &&\r\n
\r\n Time Enroute: {enRouteTime}\r\n
\r\n }\r\n
\r\n \r\n \r\n
\r\n  \r\n {departure || '????' }\r\n
\r\n
\r\n
\r\n {departureCity} {departureState} {departureCountry}\r\n
\r\n
\r\n {flightAwareDepartureTimeUTC && <> Departed: {flightAwareDepartureTimeLocal && <>{flightAwareDepartureTimeLocal} Local / }{flightAwareDepartureTimeUTC}}\r\n {!flightAwareDepartureTimeUTC && flightAwareEstimatedDepartureTimeUTC && <>Est. Departure: {flightAwareEstimatedDepartureTimeLocal && <>{flightAwareEstimatedDepartureTimeLocal} Local / }{flightAwareEstimatedDepartureTimeUTC} UTC}\r\n {!flightAwareDepartureTimeUTC && !flightAwareEstimatedDepartureTimeUTC && scheduledDepartureTimeUTC && <>Sch. Departure: {scheduledDepartureTimeLocal && <>{scheduledDepartureTimeLocal} Local / } {scheduledDepartureTimeUTC} UTC}\r\n
\r\n
\r\n \r\n \r\n
\r\n  \r\n {arrival || '????'}\r\n
\r\n
\r\n
\r\n {arrivalCity} {arrivalState} {arrivalCountry}\r\n
\r\n
\r\n {flightAwareArrivalTimeUTC && <>Arrived: {flightAwareArrivalTimeLocal && <>{flightAwareArrivalTimeLocal} Local / }{flightAwareArrivalTimeUTC} UTC}\r\n {!flightAwareArrivalTimeUTC && flightAwareEstimatedArrivalTimeUTC && <>Est. Arrival: {flightAwareEstimatedArrivalTimeLocal && <>{flightAwareEstimatedArrivalTimeLocal} Local / }{flightAwareEstimatedArrivalTimeUTC} UTC}\r\n {!flightAwareArrivalTimeUTC && !flightAwareEstimatedArrivalTimeUTC && scheduledArrivalTimeUTC && <>Sch. Arrival: {scheduledArrivalTimeLocal && <>{scheduledArrivalTimeLocal} Local / }{scheduledArrivalTimeUTC} UTC}\r\n
\r\n
\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport const TrackedFlightInfo = withFlightAwareTracking(FlightInfo);","import React from 'react';\r\nimport { Container, Row, Col } from 'reactstrap';\r\n\r\nexport const FlightExpired: React.FC = () => {\r\n return (\r\n \r\n \r\n \r\n

Tracking information is no longer available for this flight.

\r\n \r\n
\r\n
\r\n );\r\n}","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\n\r\ninterface ApiProps {\r\n apiKey: string\r\n}\r\n\r\nconst CALLBACK_NAME = '__AvianisGoogleMapsApiCallback';\r\n\r\nexport class Api extends React.Component {\r\n\r\n static propTypes = {\r\n apiKey: PropTypes.string.isRequired\r\n }\r\n\r\n static displayName = \"GoogleMaps.Api\";\r\n\r\n private addScript = false;\r\n\r\n constructor(props: ApiProps) {\r\n super(props);\r\n if (Api.loaded) {\r\n console.warn(\"Attempting to load Google Maps API more than once on this page.\");\r\n } else {\r\n this.addScript = true;\r\n Api.loaded = new Promise((resolve) => {\r\n (window as any)[CALLBACK_NAME]= () => {\r\n resolve();\r\n }\r\n });\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (this.addScript) {\r\n var script = document.createElement(\"script\");\r\n let keyParam = (this.props.apiKey && `key=${this.props.apiKey}&`) || \"\";\r\n\r\n script.src = `https://maps.googleapis.com/maps/api/js?${keyParam}callback=${CALLBACK_NAME}`;\r\n script.async = script.defer = true;\r\n\r\n document.body.appendChild(script);\r\n }\r\n }\r\n\r\n public static loaded: Promise;\r\n\r\n render(): null { return null; }\r\n}\r\n","/*global google*/\r\n\r\n// Utilities for looking at zoom vs bounds\r\ntype size = { width: number; height: number };\r\n\r\nexport function getZoomLevelForBounds(bounds: google.maps.LatLngBounds, mapDim: size) {\r\n var WORLD_DIM = { height: 256, width: 256 };\r\n var ZOOM_MAX = 21;\r\n\r\n function latRad(lat: number) {\r\n var sin = Math.sin(lat * Math.PI / 180);\r\n var radX2 = Math.log((1 + sin) / (1 - sin)) / 2;\r\n return Math.max(Math.min(radX2, Math.PI), -Math.PI) / 2;\r\n }\r\n\r\n function zoom(mapPx: number, worldPx: number, fraction: number) {\r\n return Math.floor(Math.log(mapPx / worldPx / fraction) / Math.LN2);\r\n }\r\n\r\n var ne = bounds.getNorthEast();\r\n var sw = bounds.getSouthWest();\r\n\r\n var latFraction = (latRad(ne.lat()) - latRad(sw.lat())) / Math.PI;\r\n\r\n var lngDiff = ne.lng() - sw.lng();\r\n var lngFraction = ((lngDiff < 0) ? (lngDiff + 360) : lngDiff) / 360;\r\n\r\n var latZoom = zoom(mapDim.height, WORLD_DIM.height, latFraction);\r\n var lngZoom = zoom(mapDim.width, WORLD_DIM.width, lngFraction);\r\n\r\n return Math.min(latZoom, lngZoom, ZOOM_MAX);\r\n}\r\n\r\nexport function getBoundsForZoomLevel(map: google.maps.Map, zoom: number) {\r\n var projection = map.getProjection();\r\n var center = map.getCenter();\r\n var div = map.getDiv();\r\n var zoomFactor = Math.pow(2, zoom) * 2;\r\n var dw = div.clientWidth / zoomFactor;\r\n var dh = div.clientHeight / zoomFactor;\r\n var cpx = projection.fromLatLngToPoint(center);\r\n\r\n return new google.maps.LatLngBounds(\r\n projection.fromPointToLatLng(new google.maps.Point(cpx.x - dw, cpx.y + dh)),\r\n projection.fromPointToLatLng(new google.maps.Point(cpx.x + dw, cpx.y - dh))\r\n );\r\n}\r\n\r\nexport function getPixelBounds(map: google.maps.Map, bounds: google.maps.LatLngBounds): { x: number, y: number, width: number, height: number }\r\nexport function getPixelBounds(map: google.maps.Map, southWest: google.maps.LatLng, northEast: google.maps.LatLng): { x: number, y: number, width: number, height: number }\r\n\r\nexport function getPixelBounds(map: google.maps.Map, arg1: google.maps.LatLng | google.maps.LatLngBounds, northEast?: google.maps.LatLng) {\r\n var southWest: google.maps.LatLng;\r\n if (arg1 instanceof google.maps.LatLngBounds) {\r\n southWest = arg1.getSouthWest();\r\n northEast = arg1.getNorthEast();\r\n } else {\r\n southWest = arg1;\r\n northEast = northEast!;\r\n }\r\n\r\n var projection = map.getProjection();\r\n var zoomFactor = Math.pow(2, map.getZoom());\r\n\r\n var llpx = projection.fromLatLngToPoint(southWest);\r\n var urpx = projection.fromLatLngToPoint(northEast);\r\n\r\n return { x: llpx.x * zoomFactor, y: urpx.y * zoomFactor, width: (urpx.x - llpx.x) * zoomFactor, height: (llpx.y - urpx.y) * zoomFactor }\r\n}\r\n\r\n// Enums that match google maps enums, but are declare here so we can use them before loading the Maps API script\r\n\r\nexport enum ControlPosition {\r\n /** Elements are positioned in the center of the bottom row. */\r\n BOTTOM_CENTER,\r\n /**\r\n * Elements are positioned in the bottom left and flow towards the middle.\r\n * Elements are positioned to the right of the Google logo.\r\n */\r\n BOTTOM_LEFT,\r\n /**\r\n * Elements are positioned in the bottom right and flow towards the middle.\r\n * Elements are positioned to the left of the copyrights.\r\n */\r\n BOTTOM_RIGHT,\r\n /**\r\n * Elements are positioned on the left, above bottom-left elements, and flow\r\n * upwards.\r\n */\r\n LEFT_BOTTOM,\r\n /** Elements are positioned in the center of the left side. */\r\n LEFT_CENTER,\r\n /**\r\n * Elements are positioned on the left, below top-left elements, and flow\r\n * downwards.\r\n */\r\n LEFT_TOP,\r\n /**\r\n * Elements are positioned on the right, above bottom-right elements, and\r\n * flow upwards.\r\n */\r\n RIGHT_BOTTOM,\r\n /** Elements are positioned in the center of the right side. */\r\n RIGHT_CENTER,\r\n /**\r\n Elements are positioned on the right, below top-right elements, and flow\r\n downwards.\r\n */\r\n RIGHT_TOP,\r\n /** Elements are positioned in the center of the top row. */\r\n TOP_CENTER,\r\n /** Elements are positioned in the top left and flow towards the middle. */\r\n TOP_LEFT,\r\n /** Elements are positioned in the top right and flow towards the middle. */\r\n TOP_RIGHT\r\n}\r\n\r\nexport function getControlPosition(position: ControlPosition): google.maps.ControlPosition;\r\nexport function getControlPosition(position?: ControlPosition): google.maps.ControlPosition | undefined;\r\n\r\nexport function getControlPosition(position?: ControlPosition) {\r\n return position === undefined ? undefined : google.maps.ControlPosition[ControlPosition[position] as keyof typeof google.maps.ControlPosition];\r\n}\r\n\r\nexport enum ZoomControlStyle {\r\n DEFAULT, LARGE, SMALL\r\n}\r\n\r\nexport const getZoomControlStyle = (style?: ZoomControlStyle) => style === undefined ? undefined : google.maps.ZoomControlStyle[ZoomControlStyle[style] as keyof typeof google.maps.ZoomControlStyle];\r\n\r\n\r\nexport enum Animation { BOUNCE, DROP, NONE }\r\nexport const getAnimation = (animation?: Animation) => (animation === undefined || animation === Animation.NONE) ? undefined : google.maps.Animation[Animation[animation] as keyof typeof google.maps.Animation];\r\n\r\n\r\n","/*global google*/\r\n\r\nimport * as React from \"react\";\r\nimport * as PropTypes from \"prop-types\";\r\nimport { Api } from \"./api\";\r\nimport { ControlPosition, ZoomControlStyle, getControlPosition, getZoomControlStyle } from \"./util\";\r\nimport { Location, locationPropType, mapLocation } from \"./location\";\r\n\r\ninterface ZoomControlOptions {\r\n position?: ControlPosition;\r\n style?: ZoomControlStyle;\r\n}\r\n\r\ninterface StreetViewControlOptions {\r\n position?: ControlPosition;\r\n}\r\n\r\nexport interface MapComponentProps {\r\n map: google.maps.Map;\r\n}\r\n\r\ninterface MapProps extends React.HTMLAttributes {\r\n children?: (map: google.maps.Map) => React.ReactNode;\r\n options: Replace\r\n}\r\n\r\ninterface MapState {\r\n map: google.maps.Map;\r\n}\r\n\r\nexport class Map extends React.Component {\r\n\r\n // We'll set this later, once the GMaps script has loaded.\r\n static propTypes: PropTypes.ValidationMap;\r\n\r\n static displayName = \"GoogleMaps.Map\";\r\n\r\n private mapRef = React.createRef();\r\n private unmounted?: boolean;\r\n\r\n componentDidMount() {\r\n if (!Api) {\r\n throw new Error(\"No GoogleMaps.Api script loader instance found!\");\r\n }\r\n Api.loaded.then(() => this.init());\r\n }\r\n\r\n componentWillUnmount() {\r\n this.state && google.maps.event.clearInstanceListeners(this.state.map);\r\n this.unmounted = true;\r\n }\r\n\r\n init() {\r\n\r\n if (this.unmounted) return;\r\n\r\n Map.propTypes = {\r\n options: PropTypes.shape({\r\n center: PropTypes.oneOfType([\r\n PropTypes.instanceOf(google.maps.LatLng),\r\n PropTypes.shape({ lat: PropTypes.number.isRequired, lng: PropTypes.number.isRequired }),\r\n locationPropType\r\n ]),\r\n zoom: PropTypes.number\r\n })\r\n }\r\n\r\n let map = new google.maps.Map(this.mapRef.current, this.getOptions());\r\n\r\n // Bounds changed will fire when we get our bounds the first time\r\n // We'll use that to consider our map ready for our children.\r\n google.maps.event.addListenerOnce(map, 'bounds_changed', () => this.setState({ map }));\r\n }\r\n\r\n componentDidUpdate(prevProps: MapProps) {\r\n if (this.state) {\r\n const {\r\n options: prevOptions,\r\n } = prevProps;\r\n\r\n const {\r\n options\r\n } = this.props;\r\n\r\n const {\r\n map\r\n } = this.state;\r\n\r\n if (options.center !== prevOptions.center) {\r\n if (options.center) {\r\n map.setCenter(mapLocation(options.center));\r\n google.maps.event.trigger(map, \"center_set\");\r\n }\r\n }\r\n\r\n if (options.styles !== prevOptions.styles) {\r\n map.setOptions({ styles: options.styles });\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n children,\r\n options,\r\n ...divProps\r\n } = this.props;\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {this.state && this.props.children && this.props.children(this.state.map)}\r\n \r\n )\r\n }\r\n\r\n private getOptions(): google.maps.MapOptions {\r\n const {\r\n options: {\r\n center,\r\n zoomControlOptions,\r\n streetViewControlOptions,\r\n ...options\r\n }\r\n } = this.props;\r\n\r\n return {\r\n zoomControlOptions: zoomControlOptions && { position: getControlPosition(zoomControlOptions.position), style: getZoomControlStyle(zoomControlOptions.style) },\r\n streetViewControlOptions: streetViewControlOptions && { position: getControlPosition(streetViewControlOptions.position) },\r\n center: center && mapLocation(center),\r\n ...options\r\n };\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport * as ReactDOM from 'react-dom';\r\nimport * as PropTypes from 'prop-types';\r\nimport { MapComponentProps } from './map';\r\nimport { ControlPosition, getControlPosition } from './util';\r\n\r\ninterface ControlProps extends MapComponentProps {\r\n position: ControlPosition;\r\n content: (() => React.ReactNode) | React.ReactNode;\r\n}\r\n\r\nexport class Control extends React.PureComponent {\r\n\r\n static propTypes = {\r\n //TODO: MapComponentProps\r\n position: PropTypes.oneOf([\r\n ControlPosition.TOP_LEFT, ControlPosition.TOP_CENTER, ControlPosition.TOP_RIGHT,\r\n ControlPosition.LEFT_BOTTOM, ControlPosition.LEFT_CENTER, ControlPosition.LEFT_TOP,\r\n ControlPosition.RIGHT_BOTTOM, ControlPosition.RIGHT_CENTER, ControlPosition.RIGHT_TOP,\r\n ControlPosition.BOTTOM_LEFT, ControlPosition.BOTTOM_CENTER, ControlPosition.BOTTOM_RIGHT\r\n ]).isRequired,\r\n content: PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired\r\n }\r\n\r\n static displayName: \"GoogleMaps.Control\";\r\n\r\n private readonly div: HTMLDivElement = document.createElement('div');\r\n\r\n componentDidMount() {\r\n this.props.map.controls[getControlPosition(this.props.position)].push(this.div);\r\n }\r\n\r\n componentDidUpdate(prevProps: ControlProps) {\r\n let prevPosition = getControlPosition(prevProps.position);\r\n let position = getControlPosition(this.props.position);\r\n\r\n if (position !== prevPosition) {\r\n let map = this.props.map;\r\n let oldIndex = map.controls[prevPosition].getArray().indexOf(this.div);\r\n if (oldIndex >= 0)\r\n map.controls[prevPosition].removeAt(oldIndex);\r\n this.props.map.controls[getControlPosition(this.props.position)].push(this.div);\r\n }\r\n }\r\n\r\n render() {\r\n const content = this.props.content instanceof Function ? this.props.content() : this.props.content;\r\n return ReactDOM.createPortal(content, this.div);\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { DefaultStyles } from \"./styles\";\r\nimport { Location } from '../googlemaps/location';\r\nimport { Map as GoogleMap } from '../googlemaps/map';\r\nimport { Control as MapControl } from '../googlemaps/control';\r\nimport { ControlPosition as MapControlPosition } from '../googlemaps/util';\r\n\r\ninterface BaseMapProps extends React.HTMLAttributes {\r\n center?: Location\r\n zoom?: number;\r\n styles?: google.maps.MapTypeStyle[];\r\n onClose?: () => void;\r\n children?: (map: google.maps.Map) => React.ReactNode;\r\n}\r\n\r\ninterface BaseMapState {\r\n\r\n}\r\n\r\nconst defaultProps = {\r\n styles: DefaultStyles,\r\n};\r\n\r\nconst UIControl: React.FC> = props => {\r\n\r\n const {\r\n style,\r\n ...other\r\n } = props;\r\n\r\n return (
{props.children})\r\n}\r\nUIControl.displayName = \"Map.BaseMap.UIControl\";\r\n\r\nconst TextControl: React.FC> = props => {\r\n const {\r\n style,\r\n ...other\r\n } = props;\r\n return (
{props.children})\r\n}\r\nTextControl.displayName = \"Map.BaseMap.TextControl\";\r\n\r\nexport const BaseMap: React.ComponentType = class extends React.PureComponent{\r\n\r\n static defaultProps = defaultProps;\r\n\r\n private readonly closeControl =\r\n this.props.onClose && this.props.onClose()} style={{ marginRight: '10px', width: '40px' }}>\r\n \r\n \r\n \r\n \r\n\r\n\r\n render() {\r\n const {\r\n center,\r\n zoom,\r\n styles,\r\n onClose,\r\n ...divProps\r\n } = this.props;\r\n\r\n return \r\n {(map) =>\r\n <>\r\n {this.props.onClose && }\r\n {this.props.children && this.props.children(map)}\r\n \r\n }\r\n \r\n }\r\n}","export const DefaultStyles: google.maps.MapTypeStyle[] = [\r\n {\r\n \"featureType\": \"all\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#55554f\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"all\",\r\n \"elementType\": \"labels.text.fill\",\r\n \"stylers\": [\r\n {\r\n \"gamma\": 0.01\r\n },\r\n {\r\n \"lightness\": 20\r\n },\r\n {\r\n \"saturation\": 19\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"all\",\r\n \"elementType\": \"labels.text.stroke\",\r\n \"stylers\": [\r\n {\r\n \"saturation\": -31\r\n },\r\n {\r\n \"lightness\": -33\r\n },\r\n {\r\n \"weight\": 2\r\n },\r\n {\r\n \"gamma\": 0.8\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"all\",\r\n \"elementType\": \"labels.icon\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"on\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.country\",\r\n \"elementType\": \"labels\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.province\",\r\n \"elementType\": \"labels\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.locality\",\r\n \"elementType\": \"labels\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n },\r\n {\r\n \"color\": \"#ffffff\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.neighborhood\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"on\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"administrative.land_parcel\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"on\"\r\n },\r\n {\r\n \"color\": \"#ff9500\"\r\n },\r\n {\r\n \"lightness\": 48\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"lightness\": 30\r\n },\r\n {\r\n \"saturation\": 30\r\n },\r\n {\r\n \"color\": \"#55554f\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape\",\r\n \"elementType\": \"labels\",\r\n \"stylers\": [\r\n {\r\n \"hue\": \"#ff0000\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape.man_made\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"on\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape.natural\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"on\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape.natural.landcover\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"landscape.natural.terrain\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"saturation\": 20\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.attraction\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.attraction\",\r\n \"elementType\": \"labels\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.business\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.government\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.park\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"poi.park\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"lightness\": 20\r\n },\r\n {\r\n \"saturation\": -20\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"color\": \"#252834\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road\",\r\n \"elementType\": \"geometry\",\r\n \"stylers\": [\r\n {\r\n \"lightness\": 10\r\n },\r\n {\r\n \"saturation\": -30\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"road\",\r\n \"elementType\": \"geometry.stroke\",\r\n \"stylers\": [\r\n {\r\n \"saturation\": 25\r\n },\r\n {\r\n \"lightness\": 25\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"all\",\r\n \"stylers\": [\r\n {\r\n \"lightness\": -20\r\n },\r\n {\r\n \"color\": \"#252834\"\r\n }\r\n ]\r\n },\r\n {\r\n \"featureType\": \"water\",\r\n \"elementType\": \"labels\",\r\n \"stylers\": [\r\n {\r\n \"visibility\": \"off\"\r\n }\r\n ]\r\n }\r\n];\r\n\r\n","/*global google*/\r\n\r\nimport * as React from \"react\";\r\nimport { MapComponentProps } from \"./map\";\r\nimport { Location, mapLocation } from \"./location\";\r\n\r\ninterface PolyLineProps extends Replace {\r\n}\r\n\r\nexport class PolyLine extends React.PureComponent{\r\n\r\n static propTypes = {\r\n //TODO: MapComponentProps\r\n }\r\n\r\n static displayName = \"GoogleMaps.PolyLine\"\r\n\r\n private polyLine?: google.maps.Polyline;\r\n\r\n componentDidMount() {\r\n this.polyLine = new google.maps.Polyline(this.getOptions());\r\n }\r\n\r\n componentDidUpdate() {\r\n this.polyLine && this.polyLine.setOptions(this.getOptions());\r\n }\r\n\r\n componentWillUnmount() {\r\n this.polyLine && this.polyLine.setMap(null);\r\n }\r\n\r\n render(): null {\r\n return null;\r\n }\r\n\r\n private getOptions(): google.maps.PolylineOptions {\r\n const {\r\n children,\r\n path,\r\n ...props\r\n } = this.props;\r\n\r\n return {\r\n path: path && mapLocation(path),\r\n ...props\r\n }\r\n }\r\n}\r\n","/*global google*/\r\n\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport * as PropTypes from \"prop-types\";\r\nimport { MapComponentProps } from \"./map\";\r\nimport { getOffsetFromParent } from \"../../util\";\r\nimport { Location, mapLocation } from \"./location\";\r\n\r\nexport enum RichMarkerPosition {\r\n TOP_LEFT = 1,\r\n TOP,\r\n TOP_RIGHT,\r\n LEFT,\r\n MIDDLE,\r\n RIGHT,\r\n BOTTOM_LEFT,\r\n BOTTOM,\r\n BOTTOM_RIGHT\r\n}\r\n\r\nexport interface PassedThroughMarkerProps {\r\n anchor?: RichMarkerPosition;\r\n position: Location;\r\n}\r\n\r\ninterface RichMarkerProps extends MapComponentProps, PassedThroughMarkerProps {\r\n content: React.RefForwardingComponent\r\n onClick?: () => void;\r\n}\r\n\r\ninterface RichMarkerOptions extends PassedThroughMarkerProps {\r\n position: google.maps.LatLng | google.maps.LatLngLiteral\r\n}\r\n\r\ndeclare class richMarker extends google.maps.OverlayView {\r\n setOptions(options: RichMarkerOptions): void;\r\n}\r\n\r\nexport class RichMarker extends React.Component>{\r\n\r\n static propTypes = {\r\n //TODO: MapComponentProps\r\n anchor: PropTypes.oneOf([\r\n RichMarkerPosition.TOP_LEFT, RichMarkerPosition.TOP, RichMarkerPosition.TOP_RIGHT,\r\n RichMarkerPosition.LEFT, RichMarkerPosition.MIDDLE, RichMarkerPosition.RIGHT,\r\n RichMarkerPosition.BOTTOM_LEFT, RichMarkerPosition.BOTTOM, RichMarkerPosition.BOTTOM_RIGHT\r\n ]),\r\n //TODO:\r\n //position:\r\n content: PropTypes.oneOfType([PropTypes.func, PropTypes.node])\r\n }\r\n\r\n static displayName = \"GoogleMaps.RichMarker\";\r\n\r\n private readonly onClick = () => this.props.onClick && this.props.onClick();\r\n\r\n private readonly content: HTMLDivElement = (() => {\r\n var content = document.createElement('div');\r\n content.addEventListener('click', this.onClick);\r\n return content;\r\n })();\r\n\r\n private marker?: richMarker;\r\n private contentRef = React.createRef();\r\n\r\n\r\n componentDidMount() {\r\n // Need to create class in here, because we need the google map scripts loaded.\r\n class richMarker extends google.maps.OverlayView {\r\n private markerWrapper: HTMLDivElement;\r\n\r\n constructor(options: RichMarkerOptions, private marker: HTMLDivElement, private markerAnchor?: React.RefObject) {\r\n super();\r\n this.setValues(options);\r\n this.markerWrapper = document.createElement(\"div\");\r\n this.markerWrapper.style.position = \"absolute\";\r\n this.markerWrapper.style.zIndex = '-999999';\r\n this.markerWrapper.appendChild(marker);\r\n }\r\n\r\n public setOptions(options: RichMarkerOptions) {\r\n this.setValues(options);\r\n }\r\n\r\n public getMarker() {\r\n return this.marker;\r\n }\r\n\r\n onAdd() {\r\n let panes = this.getPanes();\r\n panes.floatPane.appendChild(this.markerWrapper);\r\n }\r\n\r\n onRemove() {\r\n if (this.markerWrapper && this.markerWrapper.parentNode) {\r\n this.markerWrapper.parentNode.removeChild(this.markerWrapper);\r\n }\r\n }\r\n\r\n anchor_changed() {\r\n this.draw();\r\n }\r\n\r\n position_changed() {\r\n this.draw();\r\n }\r\n\r\n draw() {\r\n if (!this.markerWrapper) return;\r\n\r\n let projection = this.getProjection();\r\n if (!projection) return;\r\n\r\n let latLng = this.get('position');\r\n if (!(latLng instanceof google.maps.LatLng))\r\n latLng = new google.maps.LatLng(latLng.lat, latLng.lng);\r\n var pos = projection.fromLatLngToDivPixel(latLng);\r\n\r\n var offset = this.getOffset();\r\n this.markerWrapper.style.top = (pos.y + offset.height) + 'px';\r\n this.markerWrapper.style.left = (pos.x + offset.width) + 'px';\r\n\r\n var height = this.marker.offsetHeight;\r\n var width = this.marker.offsetWidth;\r\n\r\n if (width !== this.get('width')) {\r\n this.set('width', width);\r\n }\r\n\r\n if (height !== this.get('height')) {\r\n this.set('height', height);\r\n }\r\n }\r\n\r\n private getOffset() {\r\n let offset = new google.maps.Size(0, 0);\r\n if (!this.marker) return offset;\r\n\r\n let offsetAnchor = (this.markerAnchor && this.markerAnchor.current) || this.marker;\r\n\r\n let width = offsetAnchor.offsetWidth;\r\n let height = offsetAnchor.offsetHeight;\r\n let anchor = this.get('anchor') as RichMarkerPosition || RichMarkerPosition.TOP_LEFT;\r\n\r\n switch (anchor) {\r\n case RichMarkerPosition.TOP_LEFT:\r\n break;\r\n case RichMarkerPosition.TOP:\r\n offset.width = -width / 2;\r\n break;\r\n case RichMarkerPosition.TOP_RIGHT:\r\n offset.width = -width;\r\n break;\r\n case RichMarkerPosition.LEFT:\r\n offset.height = -height / 2;\r\n break;\r\n case RichMarkerPosition.MIDDLE:\r\n offset.height = -height / 2;\r\n offset.width = -width / 2;\r\n break;\r\n case RichMarkerPosition.RIGHT:\r\n offset.width = -width;\r\n offset.height = -height / 2;\r\n break;\r\n case RichMarkerPosition.BOTTOM_LEFT:\r\n offset.height = -height;\r\n break;\r\n case RichMarkerPosition.BOTTOM:\r\n offset.width = -width / 2;\r\n offset.height = -height;\r\n break;\r\n case RichMarkerPosition.BOTTOM_RIGHT:\r\n offset.width = -width;\r\n offset.height = -height;\r\n break;\r\n }\r\n\r\n // Maybe a bug, why force the not null?\r\n let anchorOffset = getOffsetFromParent(offsetAnchor, this.marker.offsetParent!);\r\n offset.width -= anchorOffset.x;\r\n offset.height -= anchorOffset.y;\r\n\r\n return offset;\r\n }\r\n }\r\n\r\n this.marker = new richMarker(this.getOptions(), this.content, this.contentRef);\r\n this.marker.setMap(this.props.map);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.marker && this.marker.setMap(null);\r\n this.content.removeEventListener('click', this.onClick);\r\n }\r\n\r\n componentDidUpdate() {\r\n this.marker && this.marker.setOptions(this.getOptions());\r\n }\r\n\r\n\r\n render() {\r\n let Content = React.forwardRef(this.props.content);\r\n let portal = ReactDOM.createPortal(, this.content);\r\n this.marker && this.marker.draw();\r\n return portal;\r\n }\r\n\r\n getComponent() {\r\n return this.marker;\r\n }\r\n\r\n private getOptions(): RichMarkerOptions {\r\n const {\r\n map,\r\n children,\r\n content,\r\n position,\r\n onClick,\r\n ...props\r\n } = this.props;\r\n\r\n return {\r\n position: mapLocation(position),\r\n ...props\r\n }\r\n }\r\n\r\n}\r\n","import * as React from \"react\";\r\nimport { RichMarker, RichMarkerPosition } from \"../googlemaps/richmarker\";\r\nimport { MapComponentProps } from \"../googlemaps/map\";\r\nimport * as flightAwareMessages from '../../models/flightawaremessages';\r\n//Simport { isFlightAwarePosition } from \"../../models/flightaware\";\r\n\r\nimport '../../map.css';\r\n\r\ninterface AircraftMarkerProps extends DOMEvents, MapComponentProps {\r\n aircraftImage?: string;\r\n tailNumber: string;\r\n aircraftType: string;\r\n aircraftTypeCode: string;\r\n departure?: string;\r\n arrival?: string;\r\n scheduledArrivalTimeUTC: string;\r\n scheduledArrivalTimeLocal: string;\r\n flightAwareEstimatedArrivalTimeUTC: string | null;\r\n flightAwareEstimatedArrivalTimeLocal: string | null;\r\n position: flightAwareMessages.Position;\r\n children?: never;\r\n}\r\n\r\nexport const AircraftMarker: React.FC = ({\r\n map,\r\n aircraftImage,\r\n tailNumber,\r\n aircraftType,\r\n aircraftTypeCode,\r\n departure,\r\n arrival,\r\n scheduledArrivalTimeUTC,\r\n scheduledArrivalTimeLocal,\r\n flightAwareEstimatedArrivalTimeUTC,\r\n flightAwareEstimatedArrivalTimeLocal,\r\n position,\r\n ...imgEvents\r\n}) => {\r\n\r\n\r\n\r\n\r\n function renderAircraft(_: {}, ref: React.Ref) {\r\n\r\n function getTime() {\r\n if (flightAwareEstimatedArrivalTimeUTC) {\r\n return <> {flightAwareEstimatedArrivalTimeLocal && <>{flightAwareEstimatedArrivalTimeLocal}L / }{flightAwareEstimatedArrivalTimeUTC}Z\r\n } else {\r\n return <>{scheduledArrivalTimeLocal && <>{scheduledArrivalTimeLocal}L / }{scheduledArrivalTimeUTC}Z\r\n }\r\n }\r\n\r\n function getDetails() {\r\n return (\r\n <>\r\n {tailNumber} {aircraftTypeCode}
\r\n {departure || ????} > {arrival || ????}
\r\n {getTime()}\r\n \r\n )\r\n }\r\n\r\n if (position.heading) {\r\n if (position.heading <= 180) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\"\" \r\n {getDetails()}\r\n
\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {getDetails()}\r\n \"\"
\r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\"\"{tailNumber}
\r\n )\r\n }\r\n\r\n if (!position) return null;\r\n\r\n return \r\n}\r\n\r\nAircraftMarker.defaultProps = {\r\n aircraftImage: '/img/map/baseline-airplanemode_active-24px.svg',\r\n }\r\n\r\nAircraftMarker.displayName = 'Map.AircraftMarker';\r\n","/*global google*/\r\n \r\nimport * as React from 'react';\r\nimport { PolyLine } from '../googlemaps/polyline';\r\nimport { FlightLegViewModel} from '../../models/flightleg';\r\nimport { MapComponentProps } from '../googlemaps/map';\r\nimport { withFlightAwareTracking, FlightAwareFlightLeg } from '../../signalr/withflightawaretracking';\r\nimport { AircraftMarker } from './aircraftmarker';\r\nimport { mapLocation } from '../googlemaps/location';\r\n\r\nexport interface FlightLegProps extends FlightLegViewModel, FlightAwareFlightLeg, MapComponentProps {\r\n aircraftImage?: string;\r\n planColor?: string;\r\n planWeight?: number;\r\n flightColor?: string;\r\n flightWeight?: number;\r\n legColor?: string;\r\n legWeight?: number;\r\n children?: never;\r\n showPlan?: boolean;\r\n aircraftEvents?: DOMEvents\r\n}\r\n\r\nexport class FlightLeg extends React.PureComponent {\r\n\r\n static defaultProps = {\r\n planColor: \"#3276b1\",\r\n planWeight: 2,\r\n flightColor: \"#ffffff\",\r\n flightWeight: 2,\r\n legColor: \"#ff3b30\",\r\n legWeight: 2,\r\n showPlan: true,\r\n aircraftEvents: {}\r\n };\r\n\r\n static displayName = \"Map.FlightLeg\";\r\n\r\n componentDidMount() {\r\n const {\r\n arrivalLocation,\r\n departureLocation,\r\n map,\r\n position\r\n } = this.props;\r\n\r\n if (arrivalLocation && departureLocation) {\r\n let bounds = new google.maps.LatLngBounds();\r\n bounds.extend(mapLocation(arrivalLocation));\r\n bounds.extend(mapLocation(departureLocation));\r\n map.fitBounds(bounds);\r\n } else if (position) {\r\n map.setCenter(mapLocation(position))\r\n map.setZoom(5);\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps: FlightLegProps) {\r\n if (!((prevProps.arrivalLocation && prevProps.departureLocation) || prevProps.position)) {\r\n if (this.props.position) {\r\n this.props.map.setCenter(mapLocation(this.props.position));\r\n this.props.map.setZoom(5);\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n map,\r\n aircraftImage,\r\n plan,\r\n flight,\r\n departureLocation,\r\n arrivalLocation,\r\n tailNumber,\r\n position,\r\n aircraftTypeName,\r\n aircraftTypeCode,\r\n departure,\r\n arrival,\r\n flightAwareEstimatedArrivalTimeLocal,\r\n flightAwareEstimatedArrivalTimeUTC,\r\n scheduledArrivalTimeLocal,\r\n scheduledArrivalTimeUTC,\r\n planColor,\r\n planWeight,\r\n flightColor,\r\n flightWeight,\r\n legColor,\r\n legWeight,\r\n showPlan,\r\n aircraftEvents\r\n } = this.props;\r\n\r\n return <>\r\n {showPlan && plan && (plan.length > 0) && }\r\n {flight && }\r\n {showPlan && plan && !plan.length && departureLocation && arrivalLocation && }\r\n {position && }\r\n \r\n }\r\n}\r\n\r\n\r\nexport const TrackedFlightLeg = withFlightAwareTracking(FlightLeg);","/*global google*/\r\n\r\nimport * as React from \"react\";\r\nimport * as PropTypes from \"prop-types\";\r\nimport { MapComponentProps } from \"./map\";\r\nimport { Location, locationPropType, mapLocation } from \"./location\";\r\nimport { Animation, getAnimation } from \"./util\";\r\n\r\ninterface MarkerProps extends MapComponentProps {\r\n position: Location;\r\n icon: string;\r\n animation?: Animation;\r\n zIndex?: number;\r\n onClick?: () => void;\r\n children?: never;\r\n}\r\n\r\nexport class Marker extends React.PureComponent{\r\n\r\n static propTypes = {\r\n //TODO: MapComponentProps\r\n icon: PropTypes.string.isRequired,\r\n onClick: PropTypes.func,\r\n position: locationPropType.isRequired,\r\n animation: PropTypes.oneOf([Animation.BOUNCE, Animation.DROP, Animation.NONE])\r\n }\r\n\r\n static displayName = \"GoogleMaps.Marker\";\r\n\r\n private listener?: google.maps.MapsEventListener;\r\n private marker?: google.maps.Marker;\r\n\r\n private onClick = () => this.props.onClick && this.props.onClick();\r\n\r\n componentDidMount() {\r\n this.marker = new google.maps.Marker(this.getOptions());\r\n this.listener = google.maps.event.addListener(this.marker, 'click', this.onClick);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.marker && this.marker.setMap(null);\r\n this.listener && this.listener.remove();\r\n }\r\n\r\n componentDidUpdate(prevProps: MarkerProps) {\r\n if (this.marker) {\r\n if (this.props.icon !== prevProps.icon) {\r\n this.marker.setIcon(this.props.icon);\r\n }\r\n if (this.props.position !== prevProps.position) {\r\n this.marker.setPosition(mapLocation(this.props.position));\r\n }\r\n if (this.props.zIndex && this.props.zIndex !== prevProps.zIndex) {\r\n this.marker.setZIndex(this.props.zIndex)\r\n }\r\n }\r\n }\r\n\r\n render(): null {\r\n return null;\r\n }\r\n\r\n getComponent() {\r\n return this.marker;\r\n }\r\n\r\n private getOptions(): google.maps.MarkerOptions {\r\n const {\r\n onClick,\r\n position,\r\n children,\r\n animation,\r\n icon,\r\n ...props\r\n } = this.props;\r\n\r\n return {\r\n position: mapLocation(position),\r\n animation: getAnimation(animation),\r\n optimized: false,\r\n icon: {\r\n scaledSize: new google.maps.Size(20, 20),\r\n url: icon\r\n },\r\n ...props\r\n }\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { FlightLegViewModel } from '../../models/flightleg';\r\nimport { withFlightAwareTracking, FlightAwareFlightLeg } from '../../signalr/withflightawaretracking';\r\nimport { FlightInfo } from './flightinfo';\r\nimport { FlightExpired } from './flightexpired';\r\nimport { BaseMap } from '../map/basemap';\r\nimport { FlightLeg } from '../map/flightleg';\r\nimport { Marker } from '../googlemaps/marker';\r\nimport { Animation } from '../googlemaps/util';\r\n\r\ninterface TrackingMapProps extends FlightLegViewModel, FlightAwareFlightLeg {\r\n airportImage?: string;\r\n aircraftImage?: string;\r\n animation?: Animation;\r\n children?: never;\r\n}\r\n\r\nconst trackingMap: React.FC = props => {\r\n\r\n function renderMap(map: google.maps.Map) {\r\n return <>\r\n {props.departureLocation && }\r\n {props.arrivalLocation && }\r\n \r\n \r\n }\r\n\r\n function displayMap() {\r\n if (props.expired) {\r\n return (\r\n \r\n )\r\n } else {\r\n return (\r\n <>\r\n \r\n
\r\n \r\n {renderMap}\r\n \r\n
\r\n \r\n )\r\n }\r\n }\r\n\r\n return <>\r\n {displayMap()}\r\n \r\n\r\n}\r\n\r\ntrackingMap.defaultProps = {\r\n airportImage: '/img/map/baseline-place-24px.svg',\r\n aircraftImage: '/img/map/baseline-airplanemode_active-24px.svg',\r\n animation: Animation.DROP \r\n}\r\n\r\n\r\nexport const TrackingMap = withFlightAwareTracking(trackingMap);","import React from 'react';\r\nimport { FlightAwareHub } from '../signalr/flightawarehub';\r\nimport { RouteComponentProps } from 'react-router';\r\nimport { fetch, FlightLegViewModel } from '../models/flightleg';\r\nimport { TrackingMap } from '../components/flight/trackingmap';\r\nimport { FlightExpired } from '../components/flight/flightexpired';\r\n\r\nexport interface MapParams {\r\n flightToken: string;\r\n}\r\n\r\ninterface MapProps extends RouteComponentProps {\r\n flightAwareHub: FlightAwareHub;\r\n children?: never;\r\n}\r\n\r\ninterface MapState {\r\n flightLeg?: FlightLegViewModel;\r\n}\r\n\r\nexport class Map extends React.PureComponent{\r\n\r\n state: MapState = {}\r\n\r\n componentDidMount() {\r\n const {\r\n flightToken\r\n } = this.props.match.params;\r\n\r\n fetch(`api/tracking/GetFlightLegData?token=${flightToken}`)\r\n .then(flightLeg => this.setState({ flightLeg }));\r\n }\r\n \r\n render() { \r\n if (this.state.flightLeg && this.state.flightLeg.expired) {\r\n return \r\n } else {\r\n return !!this.state.flightLeg && \r\n } \r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { IRetryPolicy, RetryContext } from \"./IRetryPolicy\";\r\n\r\n// 0, 2, 10, 30 second delays before reconnect attempts.\r\nconst DEFAULT_RETRY_DELAYS_IN_MILLISECONDS = [0, 2000, 10000, 30000, null];\r\n\r\n/** @private */\r\nexport class DefaultReconnectPolicy implements IRetryPolicy {\r\n private readonly _retryDelays: (number | null)[];\r\n\r\n constructor(retryDelays?: number[]) {\r\n this._retryDelays = retryDelays !== undefined ? [...retryDelays, null] : DEFAULT_RETRY_DELAYS_IN_MILLISECONDS;\r\n }\r\n\r\n public nextRetryDelayInMilliseconds(retryContext: RetryContext): number | null {\r\n return this._retryDelays[retryContext.previousRetryCount];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpTransportType } from \"./ITransport\";\r\n\r\n/** Error thrown when an HTTP request fails. */\r\nexport class HttpError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The HTTP status code represented by this error. */\r\n public statusCode: number;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n constructor(errorMessage: string, statusCode: number) {\r\n const trueProto = new.target.prototype;\r\n super(`${errorMessage}: Status code '${statusCode}'`);\r\n this.statusCode = statusCode;\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when a timeout elapses. */\r\nexport class TimeoutError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"A timeout occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when an action is aborted. */\r\nexport class AbortError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n constructor(errorMessage: string = \"An abort occurred.\") {\r\n const trueProto = new.target.prototype;\r\n super(errorMessage);\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport is unsupported by the browser. */\r\n/** @private */\r\nexport class UnsupportedTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occured on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.UnsupportedTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'UnsupportedTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport is disabled by the browser. */\r\n/** @private */\r\nexport class DisabledTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occured on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.DisabledTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'DisabledTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the selected transport cannot be started. */\r\n/** @private */\r\nexport class FailedToStartTransportError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The {@link @microsoft/signalr.HttpTransportType} this error occured on. */\r\n public transport: HttpTransportType;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToStartTransportError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {HttpTransportType} transport The {@link @microsoft/signalr.HttpTransportType} this error occured on.\r\n */\r\n constructor(message: string, transport: HttpTransportType) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.transport = transport;\r\n this.errorType = 'FailedToStartTransportError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when the negotiation with the server failed to complete. */\r\n/** @private */\r\nexport class FailedToNegotiateWithServerError extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The type name of this error. */\r\n public errorType: string;\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.FailedToNegotiateWithServerError}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n */\r\n constructor(message: string) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n this.errorType = 'FailedToNegotiateWithServerError';\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n\r\n/** Error thrown when multiple errors have occured. */\r\n/** @private */\r\nexport class AggregateErrors extends Error {\r\n // @ts-ignore: Intentionally unused.\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private __proto__: Error;\r\n\r\n /** The collection of errors this error is aggregating. */\r\n public innerErrors: Error[];\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.AggregateErrors}.\r\n *\r\n * @param {string} message A descriptive error message.\r\n * @param {Error[]} innerErrors The collection of errors this error is aggregating.\r\n */\r\n constructor(message: string, innerErrors: Error[]) {\r\n const trueProto = new.target.prototype;\r\n super(message);\r\n\r\n this.innerErrors = innerErrors;\r\n\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n this.__proto__ = trueProto;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortSignal } from \"./AbortController\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\n\r\n/** Represents an HTTP request. */\r\nexport interface HttpRequest {\r\n /** The HTTP method to use for the request. */\r\n method?: string;\r\n\r\n /** The URL for the request. */\r\n url?: string;\r\n\r\n /** The body content for the request. May be a string or an ArrayBuffer (for binary data). */\r\n content?: string | ArrayBuffer;\r\n\r\n /** An object describing headers to apply to the request. */\r\n headers?: MessageHeaders;\r\n\r\n /** The XMLHttpRequestResponseType to apply to the request. */\r\n responseType?: XMLHttpRequestResponseType;\r\n\r\n /** An AbortSignal that can be monitored for cancellation. */\r\n abortSignal?: AbortSignal;\r\n\r\n /** The time to wait for the request to complete before throwing a TimeoutError. Measured in milliseconds. */\r\n timeout?: number;\r\n\r\n /** This controls whether credentials such as cookies are sent in cross-site requests. */\r\n withCredentials?: boolean;\r\n}\r\n\r\n/** Represents an HTTP response. */\r\nexport class HttpResponse {\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n */\r\n constructor(statusCode: number);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code and message.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n */\r\n constructor(statusCode: number, statusText: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and string content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: ArrayBuffer);\r\n\r\n /** Constructs a new instance of {@link @microsoft/signalr.HttpResponse} with the specified status code, message and binary content.\r\n *\r\n * @param {number} statusCode The status code of the response.\r\n * @param {string} statusText The status message of the response.\r\n * @param {string | ArrayBuffer} content The content of the response.\r\n */\r\n constructor(statusCode: number, statusText: string, content: string | ArrayBuffer);\r\n constructor(\r\n public readonly statusCode: number,\r\n public readonly statusText?: string,\r\n public readonly content?: string | ArrayBuffer) {\r\n }\r\n}\r\n\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nexport abstract class HttpClient {\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string): Promise;\r\n\r\n /** Issues an HTTP GET request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public get(url: string, options: HttpRequest): Promise;\r\n public get(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"GET\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string): Promise;\r\n\r\n /** Issues an HTTP POST request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public post(url: string, options: HttpRequest): Promise;\r\n public post(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"POST\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string): Promise;\r\n\r\n /** Issues an HTTP DELETE request to the specified URL, returning a Promise that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {string} url The URL for the request.\r\n * @param {HttpRequest} options Additional options to configure the request. The 'url' field in this object will be overridden by the url parameter.\r\n * @returns {Promise} A Promise that resolves with an {@link @microsoft/signalr.HttpResponse} describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public delete(url: string, options: HttpRequest): Promise;\r\n public delete(url: string, options?: HttpRequest): Promise {\r\n return this.send({\r\n ...options,\r\n method: \"DELETE\",\r\n url,\r\n });\r\n }\r\n\r\n /** Issues an HTTP request to the specified URL, returning a {@link Promise} that resolves with an {@link @microsoft/signalr.HttpResponse} representing the result.\r\n *\r\n * @param {HttpRequest} request An {@link @microsoft/signalr.HttpRequest} describing the request to send.\r\n * @returns {Promise} A Promise that resolves with an HttpResponse describing the response, or rejects with an Error indicating a failure.\r\n */\r\n public abstract send(request: HttpRequest): Promise;\r\n\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n public getCookieString(url: string): string {\r\n return \"\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport enum LogLevel {\r\n /** Log level for very low severity diagnostic messages. */\r\n Trace = 0,\r\n /** Log level for low severity diagnostic messages. */\r\n Debug = 1,\r\n /** Log level for informational diagnostic messages. */\r\n Information = 2,\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n Warning = 3,\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n Error = 4,\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n Critical = 5,\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n None = 6,\r\n}\r\n\r\n/** An abstraction that provides a sink for diagnostic messages. */\r\nexport interface ILogger {\r\n /** Called by the framework to emit a diagnostic message.\r\n *\r\n * @param {LogLevel} logLevel The severity level of the message.\r\n * @param {string} message The message.\r\n */\r\n log(logLevel: LogLevel, message: string): void;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\n\r\n/** A logger that does nothing when log messages are sent to it. */\r\nexport class NullLogger implements ILogger {\r\n /** The singleton instance of the {@link @microsoft/signalr.NullLogger}. */\r\n public static instance: ILogger = new NullLogger();\r\n\r\n private constructor() {}\r\n\r\n /** @inheritDoc */\r\n // eslint-disable-next-line\r\n public log(_logLevel: LogLevel, _message: string): void {\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n// Version token that will be replaced by the prepack command\r\n/** The version of the SignalR client. */\r\n\r\nexport const VERSION: string = \"0.0.0-DEV_BUILD\";\r\n/** @private */\r\nexport class Arg {\r\n public static isRequired(val: any, name: string): void {\r\n if (val === null || val === undefined) {\r\n throw new Error(`The '${name}' argument is required.`);\r\n }\r\n }\r\n public static isNotEmpty(val: string, name: string): void {\r\n if (!val || val.match(/^\\s*$/)) {\r\n throw new Error(`The '${name}' argument should not be empty.`);\r\n }\r\n }\r\n\r\n public static isIn(val: any, values: any, name: string): void {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(`Unknown ${name} value: ${val}.`);\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class Platform {\r\n // react-native has a window but no document so we should check both\r\n public static get isBrowser(): boolean {\r\n return typeof window === \"object\" && typeof window.document === \"object\";\r\n }\r\n\r\n // WebWorkers don't have a window object so the isBrowser check would fail\r\n public static get isWebWorker(): boolean {\r\n return typeof self === \"object\" && \"importScripts\" in self;\r\n }\r\n\r\n // react-native has a window but no document\r\n static get isReactNative(): boolean {\r\n return typeof window === \"object\" && typeof window.document === \"undefined\";\r\n }\r\n\r\n // Node apps shouldn't have a window object, but WebWorkers don't either\r\n // so we need to check for both WebWorker and window\r\n public static get isNode(): boolean {\r\n return !this.isBrowser && !this.isWebWorker && !this.isReactNative;\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getDataDetail(data: any, includeContent: boolean): string {\r\n let detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = `Binary data of length ${data.byteLength}`;\r\n if (includeContent) {\r\n detail += `. Content: '${formatArrayBuffer(data)}'`;\r\n }\r\n } else if (typeof data === \"string\") {\r\n detail = `String data of length ${data.length}`;\r\n if (includeContent) {\r\n detail += `. Content: '${data}'`;\r\n }\r\n }\r\n return detail;\r\n}\r\n\r\n/** @private */\r\nexport function formatArrayBuffer(data: ArrayBuffer): string {\r\n const view = new Uint8Array(data);\r\n\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n let str = \"\";\r\n view.forEach((num) => {\r\n const pad = num < 16 ? \"0\" : \"\";\r\n str += `0x${pad}${num.toString(16)} `;\r\n });\r\n\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val: any): val is ArrayBuffer {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n\r\n/** @private */\r\nexport async function sendMessage(logger: ILogger, transportName: string, httpClient: HttpClient, url: string, accessTokenFactory: (() => string | Promise) | undefined,\r\n content: string | ArrayBuffer, options: IHttpConnectionOptions): Promise {\r\n let headers: {[k: string]: string} = {};\r\n if (accessTokenFactory) {\r\n const token = await accessTokenFactory();\r\n if (token) {\r\n headers = {\r\n [\"Authorization\"]: `Bearer ${token}`,\r\n };\r\n }\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) sending data. ${getDataDetail(content, options.logMessageContent!)}.`);\r\n\r\n const responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n const response = await httpClient.post(url, {\r\n content,\r\n headers: { ...headers, ...options.headers},\r\n responseType,\r\n timeout: options.timeout,\r\n withCredentials: options.withCredentials,\r\n });\r\n\r\n logger.log(LogLevel.Trace, `(${transportName} transport) request complete. Response status: ${response.statusCode}.`);\r\n}\r\n\r\n/** @private */\r\nexport function createLogger(logger?: ILogger | LogLevel): ILogger {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n\r\n if ((logger as ILogger).log !== undefined) {\r\n return logger as ILogger;\r\n }\r\n\r\n return new ConsoleLogger(logger as LogLevel);\r\n}\r\n\r\n/** @private */\r\nexport class SubjectSubscription implements ISubscription {\r\n private _subject: Subject;\r\n private _observer: IStreamSubscriber;\r\n\r\n constructor(subject: Subject, observer: IStreamSubscriber) {\r\n this._subject = subject;\r\n this._observer = observer;\r\n }\r\n\r\n public dispose(): void {\r\n const index: number = this._subject.observers.indexOf(this._observer);\r\n if (index > -1) {\r\n this._subject.observers.splice(index, 1);\r\n }\r\n\r\n if (this._subject.observers.length === 0 && this._subject.cancelCallback) {\r\n this._subject.cancelCallback().catch((_) => { });\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport class ConsoleLogger implements ILogger {\r\n private readonly _minLevel: LogLevel;\r\n\r\n // Public for testing purposes.\r\n public out: {\r\n error(message: any): void,\r\n warn(message: any): void,\r\n info(message: any): void,\r\n log(message: any): void,\r\n };\r\n\r\n constructor(minimumLogLevel: LogLevel) {\r\n this._minLevel = minimumLogLevel;\r\n this.out = console;\r\n }\r\n\r\n public log(logLevel: LogLevel, message: string): void {\r\n if (logLevel >= this._minLevel) {\r\n const msg = `[${new Date().toISOString()}] ${LogLevel[logLevel]}: ${message}`;\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n this.out.error(msg);\r\n break;\r\n case LogLevel.Warning:\r\n this.out.warn(msg);\r\n break;\r\n case LogLevel.Information:\r\n this.out.info(msg);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n this.out.log(msg);\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getUserAgentHeader(): [string, string] {\r\n let userAgentHeaderName = \"X-SignalR-User-Agent\";\r\n if (Platform.isNode) {\r\n userAgentHeaderName = \"User-Agent\";\r\n }\r\n return [ userAgentHeaderName, constructUserAgent(VERSION, getOsName(), getRuntime(), getRuntimeVersion()) ];\r\n}\r\n\r\n/** @private */\r\nexport function constructUserAgent(version: string, os: string, runtime: string, runtimeVersion: string | undefined): string {\r\n // Microsoft SignalR/[Version] ([Detailed Version]; [Operating System]; [Runtime]; [Runtime Version])\r\n let userAgent: string = \"Microsoft SignalR/\";\r\n\r\n const majorAndMinor = version.split(\".\");\r\n userAgent += `${majorAndMinor[0]}.${majorAndMinor[1]}`;\r\n userAgent += ` (${version}; `;\r\n\r\n if (os && os !== \"\") {\r\n userAgent += `${os}; `;\r\n } else {\r\n userAgent += \"Unknown OS; \";\r\n }\r\n\r\n userAgent += `${runtime}`;\r\n\r\n if (runtimeVersion) {\r\n userAgent += `; ${runtimeVersion}`;\r\n } else {\r\n userAgent += \"; Unknown Runtime Version\";\r\n }\r\n\r\n userAgent += \")\";\r\n return userAgent;\r\n}\r\n\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getOsName(): string {\r\n if (Platform.isNode) {\r\n switch (process.platform) {\r\n case \"win32\":\r\n return \"Windows NT\";\r\n case \"darwin\":\r\n return \"macOS\";\r\n case \"linux\":\r\n return \"Linux\";\r\n default:\r\n return process.platform;\r\n }\r\n } else {\r\n return \"\";\r\n }\r\n}\r\n\r\n// eslint-disable-next-line spaced-comment\r\n/*#__PURE__*/ function getRuntimeVersion(): string | undefined {\r\n if (Platform.isNode) {\r\n return process.versions.node;\r\n }\r\n return undefined;\r\n}\r\n\r\nfunction getRuntime(): string {\r\n if (Platform.isNode) {\r\n return \"NodeJS\";\r\n } else {\r\n return \"Browser\";\r\n }\r\n}\r\n\r\n/** @private */\r\nexport function getErrorString(e: any): string {\r\n if (e.stack) {\r\n return e.stack;\r\n } else if (e.message) {\r\n return e.message;\r\n }\r\n return `${e}`;\r\n}\r\n\r\n/** @private */\r\nexport function getGlobalThis(): unknown {\r\n // globalThis is semi-new and not available in Node until v12\r\n if (typeof globalThis !== \"undefined\") {\r\n return globalThis;\r\n }\r\n if (typeof self !== \"undefined\") {\r\n return self;\r\n }\r\n if (typeof window !== \"undefined\") {\r\n return window;\r\n }\r\n if (typeof global !== \"undefined\") {\r\n return global;\r\n }\r\n throw new Error(\"could not find global\");\r\n}","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// @ts-ignore: This will be removed from built files and is here to make the types available during dev work\r\nimport { CookieJar } from \"@types/tough-cookie\";\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { Platform, getGlobalThis } from \"./Utils\";\r\n\r\nexport class FetchHttpClient extends HttpClient {\r\n private readonly _abortControllerType: { prototype: AbortController, new(): AbortController };\r\n private readonly _fetchType: (input: RequestInfo, init?: RequestInit) => Promise;\r\n private readonly _jar?: CookieJar;\r\n\r\n private readonly _logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this._logger = logger;\r\n\r\n if (typeof fetch === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n\r\n // Cookies aren't automatically handled in Node so we need to add a CookieJar to preserve cookies across requests\r\n this._jar = new (requireFunc(\"tough-cookie\")).CookieJar();\r\n this._fetchType = requireFunc(\"node-fetch\");\r\n\r\n // node-fetch doesn't have a nice API for getting and setting cookies\r\n // fetch-cookie will wrap a fetch implementation with a default CookieJar or a provided one\r\n this._fetchType = requireFunc(\"fetch-cookie\")(this._fetchType, this._jar);\r\n } else {\r\n this._fetchType = fetch.bind(getGlobalThis());\r\n }\r\n if (typeof AbortController === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n\r\n // Node needs EventListener methods on AbortController which our custom polyfill doesn't provide\r\n this._abortControllerType = requireFunc(\"abort-controller\");\r\n } else {\r\n this._abortControllerType = AbortController;\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public async send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n throw new AbortError();\r\n }\r\n\r\n if (!request.method) {\r\n throw new Error(\"No method defined.\");\r\n }\r\n if (!request.url) {\r\n throw new Error(\"No url defined.\");\r\n }\r\n\r\n const abortController = new this._abortControllerType();\r\n\r\n let error: any;\r\n // Hook our abortSignal into the abort controller\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n abortController.abort();\r\n error = new AbortError();\r\n };\r\n }\r\n\r\n // If a timeout has been passed in, setup a timeout to call abort\r\n // Type needs to be any to fit window.setTimeout and NodeJS.setTimeout\r\n let timeoutId: any = null;\r\n if (request.timeout) {\r\n const msTimeout = request.timeout!;\r\n timeoutId = setTimeout(() => {\r\n abortController.abort();\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n error = new TimeoutError();\r\n }, msTimeout);\r\n }\r\n\r\n let response: Response;\r\n try {\r\n response = await this._fetchType(request.url!, {\r\n body: request.content!,\r\n cache: \"no-cache\",\r\n credentials: request.withCredentials === true ? \"include\" : \"same-origin\",\r\n headers: {\r\n \"Content-Type\": \"text/plain;charset=UTF-8\",\r\n \"X-Requested-With\": \"XMLHttpRequest\",\r\n ...request.headers,\r\n },\r\n method: request.method!,\r\n mode: \"cors\",\r\n redirect: \"follow\",\r\n signal: abortController.signal,\r\n });\r\n } catch (e) {\r\n if (error) {\r\n throw error;\r\n }\r\n this._logger.log(\r\n LogLevel.Warning,\r\n `Error from HTTP request. ${e}.`,\r\n );\r\n throw e;\r\n } finally {\r\n if (timeoutId) {\r\n clearTimeout(timeoutId);\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n }\r\n\r\n if (!response.ok) {\r\n const errorMessage = await deserializeContent(response, \"text\") as string;\r\n throw new HttpError(errorMessage || response.statusText, response.status);\r\n }\r\n\r\n const content = deserializeContent(response, request.responseType);\r\n const payload = await content;\r\n\r\n return new HttpResponse(\r\n response.status,\r\n response.statusText,\r\n payload,\r\n );\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n let cookies: string = \"\";\r\n if (Platform.isNode && this._jar) {\r\n // @ts-ignore: unused variable\r\n this._jar.getCookies(url, (e, c) => cookies = c.join(\"; \"));\r\n }\r\n return cookies;\r\n }\r\n}\r\n\r\nfunction deserializeContent(response: Response, responseType?: XMLHttpRequestResponseType): Promise {\r\n let content;\r\n switch (responseType) {\r\n case \"arraybuffer\":\r\n content = response.arrayBuffer();\r\n break;\r\n case \"text\":\r\n content = response.text();\r\n break;\r\n case \"blob\":\r\n case \"document\":\r\n case \"json\":\r\n throw new Error(`${responseType} is not supported.`);\r\n default:\r\n content = response.text();\r\n break;\r\n }\r\n\r\n return content;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\n\r\nexport class XhrHttpClient extends HttpClient {\r\n private readonly _logger: ILogger;\r\n\r\n public constructor(logger: ILogger) {\r\n super();\r\n this._logger = logger;\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n\r\n xhr.open(request.method!, request.url!, true);\r\n xhr.withCredentials = request.withCredentials === undefined ? true : request.withCredentials;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n\r\n const headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach((header) => {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = () => {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n\r\n xhr.onload = () => {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n } else {\r\n reject(new HttpError(xhr.response || xhr.responseText || xhr.statusText, xhr.status));\r\n }\r\n };\r\n\r\n xhr.onerror = () => {\r\n this._logger.log(LogLevel.Warning, `Error from HTTP request. ${xhr.status}: ${xhr.statusText}.`);\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n\r\n xhr.ontimeout = () => {\r\n this._logger.log(LogLevel.Warning, `Timeout from HTTP request.`);\r\n reject(new TimeoutError());\r\n };\r\n\r\n xhr.send(request.content || \"\");\r\n });\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortError } from \"./Errors\";\r\nimport { FetchHttpClient } from \"./FetchHttpClient\";\r\nimport { HttpClient, HttpRequest, HttpResponse } from \"./HttpClient\";\r\nimport { ILogger } from \"./ILogger\";\r\nimport { Platform } from \"./Utils\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n\r\n/** Default implementation of {@link @microsoft/signalr.HttpClient}. */\r\nexport class DefaultHttpClient extends HttpClient {\r\n private readonly _httpClient: HttpClient;\r\n\r\n /** Creates a new instance of the {@link @microsoft/signalr.DefaultHttpClient}, using the provided {@link @microsoft/signalr.ILogger} to log messages. */\r\n public constructor(logger: ILogger) {\r\n super();\r\n\r\n if (typeof fetch !== \"undefined\" || Platform.isNode) {\r\n this._httpClient = new FetchHttpClient(logger);\r\n } else if (typeof XMLHttpRequest !== \"undefined\") {\r\n this._httpClient = new XhrHttpClient(logger);\r\n } else {\r\n throw new Error(\"No usable HttpClient found.\");\r\n }\r\n }\r\n\r\n /** @inheritDoc */\r\n public send(request: HttpRequest): Promise {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n\r\n return this._httpClient.send(request);\r\n }\r\n\r\n public getCookieString(url: string): string {\r\n return this._httpClient.getCookieString(url);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nexport abstract class HeaderNames {\r\n static readonly Authorization = \"Authorization\";\r\n static readonly Cookie = \"Cookie\";\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport enum HttpTransportType {\r\n /** Specifies no transport preference. */\r\n None = 0,\r\n /** Specifies the WebSockets transport. */\r\n WebSockets = 1,\r\n /** Specifies the Server-Sent Events transport. */\r\n ServerSentEvents = 2,\r\n /** Specifies the Long Polling transport. */\r\n LongPolling = 4,\r\n}\r\n\r\n/** Specifies the transfer format for a connection. */\r\nexport enum TransferFormat {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n Text = 1,\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n Binary = 2,\r\n}\r\n\r\n/** An abstraction over the behavior of transports. This is designed to support the framework and not intended for use by applications. */\r\nexport interface ITransport {\r\n connect(url: string, transferFormat: TransferFormat): Promise;\r\n send(data: any): Promise;\r\n stop(): Promise;\r\n onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n onclose: ((error?: Error) => void) | null;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n\r\n// Not exported from index.\r\n/** @private */\r\nexport class AbortController implements AbortSignal {\r\n private _isAborted: boolean = false;\r\n public onabort: (() => void) | null = null;\r\n\r\n public abort(): void {\r\n if (!this._isAborted) {\r\n this._isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n }\r\n\r\n get signal(): AbortSignal {\r\n return this;\r\n }\r\n\r\n get aborted(): boolean {\r\n return this._isAborted;\r\n }\r\n}\r\n\r\n/** Represents a signal that can be monitored to determine if a request has been aborted. */\r\nexport interface AbortSignal {\r\n /** Indicates if the request has been aborted. */\r\n aborted: boolean;\r\n /** Set this to a handler that will be invoked when the request is aborted. */\r\n onabort: (() => void) | null;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient, HttpRequest } from \"./HttpClient\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, sendMessage } from \"./Utils\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nexport class LongPollingTransport implements ITransport {\r\n private readonly _httpClient: HttpClient;\r\n private readonly _accessTokenFactory: (() => string | Promise) | undefined;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n private readonly _pollAbort: AbortController;\r\n\r\n private _url?: string;\r\n private _running: boolean;\r\n private _receiving?: Promise;\r\n private _closeError?: Error;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n public get pollAborted(): boolean {\r\n return this._pollAbort.aborted;\r\n }\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined, logger: ILogger, options: IHttpConnectionOptions) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._pollAbort = new AbortController();\r\n this._options = options;\r\n\r\n this._running = false;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._url = url;\r\n\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n const headers = { [name]: value, ...this._options.headers };\r\n\r\n const pollOptions: HttpRequest = {\r\n abortSignal: this._pollAbort.signal,\r\n headers,\r\n timeout: 100000,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n\r\n // Make initial long polling request\r\n // Server uses first long polling request to finish initializing connection and it returns without data\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n } else {\r\n this._running = true;\r\n }\r\n\r\n this._receiving = this._poll(this._url, pollOptions);\r\n }\r\n\r\n private async _getAccessToken(): Promise {\r\n if (this._accessTokenFactory) {\r\n return await this._accessTokenFactory();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private _updateHeaderToken(request: HttpRequest, token: string | null) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n request.headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n return;\r\n }\r\n if (request.headers[HeaderNames.Authorization]) {\r\n delete request.headers[HeaderNames.Authorization];\r\n }\r\n }\r\n\r\n private async _poll(url: string, pollOptions: HttpRequest): Promise {\r\n try {\r\n while (this._running) {\r\n // We have to get the access token on each poll, in case it changes\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(pollOptions, token);\r\n\r\n try {\r\n const pollUrl = `${url}&_=${Date.now()}`;\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) polling: ${pollUrl}.`);\r\n const response = await this._httpClient.get(pollUrl, pollOptions);\r\n\r\n if (response.statusCode === 204) {\r\n this._logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n\r\n this._running = false;\r\n } else if (response.statusCode !== 200) {\r\n this._logger.log(LogLevel.Error, `(LongPolling transport) Unexpected response code: ${response.statusCode}.`);\r\n\r\n // Unexpected status code\r\n this._closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this._running = false;\r\n } else {\r\n // Process the response\r\n if (response.content) {\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) data received. ${getDataDetail(response.content, this._options.logMessageContent!)}.`);\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n } else {\r\n // This is another way timeout manifest.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n } catch (e) {\r\n if (!this._running) {\r\n // Log but disregard errors that occur after stopping\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) Poll errored after shutdown: ${e.message}`);\r\n } else {\r\n if (e instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n } else {\r\n // Close the connection with the error as the result.\r\n this._closeError = e;\r\n this._running = false;\r\n }\r\n }\r\n }\r\n }\r\n } finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this._raiseOnClose();\r\n }\r\n }\r\n }\r\n\r\n public async send(data: any): Promise {\r\n if (!this._running) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"LongPolling\", this._httpClient, this._url!, this._accessTokenFactory, data, this._options);\r\n }\r\n\r\n public async stop(): Promise {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this._running = false;\r\n this._pollAbort.abort();\r\n\r\n try {\r\n await this._receiving;\r\n\r\n // Send DELETE to clean up long polling on the server\r\n this._logger.log(LogLevel.Trace, `(LongPolling transport) sending DELETE request to ${this._url}.`);\r\n\r\n const headers: {[k: string]: string} = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const deleteOptions: HttpRequest = {\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n };\r\n const token = await this._getAccessToken();\r\n this._updateHeaderToken(deleteOptions, token);\r\n await this._httpClient.delete(this._url!, deleteOptions);\r\n\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n } finally {\r\n this._logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this._raiseOnClose();\r\n }\r\n }\r\n\r\n private _raiseOnClose() {\r\n if (this.onclose) {\r\n let logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this._closeError) {\r\n logMessage += \" Error: \" + this._closeError;\r\n }\r\n this._logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this._closeError);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform, sendMessage } from \"./Utils\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\n\r\n/** @private */\r\nexport class ServerSentEventsTransport implements ITransport {\r\n private readonly _httpClient: HttpClient;\r\n private readonly _accessTokenFactory: (() => string | Promise) | undefined;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n private _eventSource?: EventSource;\r\n private _url?: string;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined, logger: ILogger,\r\n options: IHttpConnectionOptions) {\r\n this._httpClient = httpClient;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logger = logger;\r\n this._options = options;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this._url = url;\r\n\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n let opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n\r\n let eventSource: EventSource;\r\n if (Platform.isBrowser || Platform.isWebWorker) {\r\n eventSource = new this._options.EventSource!(url, { withCredentials: this._options.withCredentials });\r\n } else {\r\n // Non-browser passes cookies via the dictionary\r\n const cookies = this._httpClient.getCookieString(url);\r\n const headers: MessageHeaders = {};\r\n headers.Cookie = cookies;\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n eventSource = new this._options.EventSource!(url, { withCredentials: this._options.withCredentials, headers: { ...headers, ...this._options.headers} } as EventSourceInit);\r\n }\r\n\r\n try {\r\n eventSource.onmessage = (e: MessageEvent) => {\r\n if (this.onreceive) {\r\n try {\r\n this._logger.log(LogLevel.Trace, `(SSE transport) data received. ${getDataDetail(e.data, this._options.logMessageContent!)}.`);\r\n this.onreceive(e.data);\r\n } catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n // @ts-ignore: not using event on purpose\r\n eventSource.onerror = (e: Event) => {\r\n // EventSource doesn't give any useful information about server side closes.\r\n if (opened) {\r\n this._close();\r\n } else {\r\n reject(new Error(\"EventSource failed to connect. The connection could not be found on the server,\"\r\n + \" either the connection ID is not present on the server, or a proxy is refusing/buffering the connection.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\"));\r\n }\r\n };\r\n\r\n eventSource.onopen = () => {\r\n this._logger.log(LogLevel.Information, `SSE connected to ${this._url}`);\r\n this._eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n } catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n });\r\n }\r\n\r\n public async send(data: any): Promise {\r\n if (!this._eventSource) {\r\n return Promise.reject(new Error(\"Cannot send until the transport is connected\"));\r\n }\r\n return sendMessage(this._logger, \"SSE\", this._httpClient, this._url!, this._accessTokenFactory, data, this._options);\r\n }\r\n\r\n public stop(): Promise {\r\n this._close();\r\n return Promise.resolve();\r\n }\r\n\r\n private _close(e?: Error) {\r\n if (this._eventSource) {\r\n this._eventSource.close();\r\n this._eventSource = undefined;\r\n\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { MessageHeaders } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { ITransport, TransferFormat } from \"./ITransport\";\r\nimport { WebSocketConstructor } from \"./Polyfills\";\r\nimport { Arg, getDataDetail, getUserAgentHeader, Platform } from \"./Utils\";\r\n\r\n/** @private */\r\nexport class WebSocketTransport implements ITransport {\r\n private readonly _logger: ILogger;\r\n private readonly _accessTokenFactory: (() => string | Promise) | undefined;\r\n private readonly _logMessageContent: boolean;\r\n private readonly _webSocketConstructor: WebSocketConstructor;\r\n private readonly _httpClient: HttpClient;\r\n private _webSocket?: WebSocket;\r\n private _headers: MessageHeaders;\r\n\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((error?: Error) => void) | null;\r\n\r\n constructor(httpClient: HttpClient, accessTokenFactory: (() => string | Promise) | undefined, logger: ILogger,\r\n logMessageContent: boolean, webSocketConstructor: WebSocketConstructor, headers: MessageHeaders) {\r\n this._logger = logger;\r\n this._accessTokenFactory = accessTokenFactory;\r\n this._logMessageContent = logMessageContent;\r\n this._webSocketConstructor = webSocketConstructor;\r\n this._httpClient = httpClient;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n this._headers = headers;\r\n }\r\n\r\n public async connect(url: string, transferFormat: TransferFormat): Promise {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + `access_token=${encodeURIComponent(token)}`;\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n url = url.replace(/^http/, \"ws\");\r\n let webSocket: WebSocket | undefined;\r\n const cookies = this._httpClient.getCookieString(url);\r\n let opened = false;\r\n\r\n if (Platform.isNode) {\r\n const headers: {[k: string]: string} = {};\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n if (cookies) {\r\n headers[HeaderNames.Cookie] = `${cookies}`;\r\n }\r\n\r\n // Only pass headers when in non-browser environments\r\n webSocket = new this._webSocketConstructor(url, undefined, {\r\n headers: { ...headers, ...this._headers },\r\n });\r\n }\r\n\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new this._webSocketConstructor(url);\r\n }\r\n\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n\r\n webSocket.onopen = (_event: Event) => {\r\n this._logger.log(LogLevel.Information, `WebSocket connected to ${url}.`);\r\n this._webSocket = webSocket;\r\n opened = true;\r\n resolve();\r\n };\r\n\r\n webSocket.onerror = (event: Event) => {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = \"There was an error with the transport\";\r\n }\r\n\r\n this._logger.log(LogLevel.Information, `(WebSockets transport) ${error}.`);\r\n };\r\n\r\n webSocket.onmessage = (message: MessageEvent) => {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) data received. ${getDataDetail(message.data, this._logMessageContent)}.`);\r\n if (this.onreceive) {\r\n try {\r\n this.onreceive(message.data);\r\n } catch (error) {\r\n this._close(error);\r\n return;\r\n }\r\n }\r\n };\r\n\r\n webSocket.onclose = (event: CloseEvent) => {\r\n // Don't call close handler if connection was never established\r\n // We'll reject the connect call instead\r\n if (opened) {\r\n this._close(event);\r\n } else {\r\n let error: any = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n } else {\r\n error = \"WebSocket failed to connect. The connection could not be found on the server,\"\r\n + \" either the endpoint may not be a SignalR endpoint,\"\r\n + \" the connection ID is not present on the server, or there is a proxy blocking WebSockets.\"\r\n + \" If you have multiple servers check that sticky sessions are enabled.\";\r\n }\r\n\r\n reject(new Error(error));\r\n }\r\n };\r\n });\r\n }\r\n\r\n public send(data: any): Promise {\r\n if (this._webSocket && this._webSocket.readyState === this._webSocketConstructor.OPEN) {\r\n this._logger.log(LogLevel.Trace, `(WebSockets transport) sending data. ${getDataDetail(data, this._logMessageContent)}.`);\r\n this._webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n }\r\n\r\n public stop(): Promise {\r\n if (this._webSocket) {\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this._close(undefined);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n private _close(event?: CloseEvent | Error): void {\r\n // webSocket will be null if the transport did not start successfully\r\n if (this._webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this._webSocket.onclose = () => {};\r\n this._webSocket.onmessage = () => {};\r\n this._webSocket.onerror = () => {};\r\n this._webSocket.close();\r\n this._webSocket = undefined;\r\n }\r\n\r\n this._logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (this._isCloseEvent(event) && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(`WebSocket closed with status code: ${event.code} (${event.reason || \"no reason given\"}).`));\r\n } else if (event instanceof Error) {\r\n this.onclose(event);\r\n } else {\r\n this.onclose();\r\n }\r\n }\r\n }\r\n\r\n private _isCloseEvent(event?: any): event is CloseEvent {\r\n return event && typeof event.wasClean === \"boolean\" && typeof event.code === \"number\";\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { AggregateErrors, DisabledTransportError, FailedToNegotiateWithServerError, FailedToStartTransportError, HttpError, UnsupportedTransportError } from \"./Errors\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, ITransport, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger, getUserAgentHeader, Platform } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\n\r\n/** @private */\r\nconst enum ConnectionState {\r\n Connecting = \"Connecting\",\r\n Connected = \"Connected\",\r\n Disconnected = \"Disconnected\",\r\n Disconnecting = \"Disconnecting\",\r\n}\r\n\r\n/** @private */\r\nexport interface INegotiateResponse {\r\n connectionId?: string;\r\n connectionToken?: string;\r\n negotiateVersion?: number;\r\n availableTransports?: IAvailableTransport[];\r\n url?: string;\r\n accessToken?: string;\r\n error?: string;\r\n}\r\n\r\n/** @private */\r\nexport interface IAvailableTransport {\r\n transport: keyof typeof HttpTransportType;\r\n transferFormats: (keyof typeof TransferFormat)[];\r\n}\r\n\r\nconst MAX_REDIRECTS = 100;\r\n\r\n/** @private */\r\nexport class HttpConnection implements IConnection {\r\n private _connectionState: ConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private _connectionStarted: boolean;\r\n private readonly _httpClient: HttpClient;\r\n private readonly _logger: ILogger;\r\n private readonly _options: IHttpConnectionOptions;\r\n // Needs to not start with _ to be available for tests\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private transport?: ITransport;\r\n private _startInternalPromise?: Promise;\r\n private _stopPromise?: Promise;\r\n private _stopPromiseResolver: (value?: PromiseLike) => void = () => {};\r\n private _stopError?: Error;\r\n private _accessTokenFactory?: () => string | Promise;\r\n private _sendQueue?: TransportSendQueue;\r\n\r\n public readonly features: any = {};\r\n public baseUrl: string;\r\n public connectionId?: string;\r\n public onreceive: ((data: string | ArrayBuffer) => void) | null;\r\n public onclose: ((e?: Error) => void) | null;\r\n\r\n private readonly _negotiateVersion: number = 1;\r\n\r\n constructor(url: string, options: IHttpConnectionOptions = {}) {\r\n Arg.isRequired(url, \"url\");\r\n\r\n this._logger = createLogger(options.logger);\r\n this.baseUrl = this._resolveUrl(url);\r\n\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent === undefined ? false : options.logMessageContent;\r\n if (typeof options.withCredentials === \"boolean\" || options.withCredentials === undefined) {\r\n options.withCredentials = options.withCredentials === undefined ? true : options.withCredentials;\r\n } else {\r\n throw new Error(\"withCredentials option was not a 'boolean' or 'undefined' value\");\r\n }\r\n options.timeout = options.timeout === undefined ? 100 * 1000 : options.timeout;\r\n\r\n let webSocketModule: any = null;\r\n let eventSourceModule: any = null;\r\n\r\n if (Platform.isNode && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n const requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n webSocketModule = requireFunc(\"ws\");\r\n eventSourceModule = requireFunc(\"eventsource\");\r\n }\r\n\r\n if (!Platform.isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n } else if (Platform.isNode && !options.WebSocket) {\r\n if (webSocketModule) {\r\n options.WebSocket = webSocketModule;\r\n }\r\n }\r\n\r\n if (!Platform.isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n } else if (Platform.isNode && !options.EventSource) {\r\n if (typeof eventSourceModule !== \"undefined\") {\r\n options.EventSource = eventSourceModule;\r\n }\r\n }\r\n\r\n this._httpClient = options.httpClient || new DefaultHttpClient(this._logger);\r\n this._connectionState = ConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n this._options = options;\r\n\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n\r\n public start(): Promise;\r\n public start(transferFormat: TransferFormat): Promise;\r\n public async start(transferFormat?: TransferFormat): Promise {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n\r\n this._logger.log(LogLevel.Debug, `Starting connection with transfer format '${TransferFormat[transferFormat]}'.`);\r\n\r\n if (this._connectionState !== ConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start an HttpConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this._connectionState = ConnectionState.Connecting;\r\n\r\n this._startInternalPromise = this._startInternal(transferFormat);\r\n await this._startInternalPromise;\r\n\r\n // The TypeScript compiler thinks that connectionState must be Connecting here. The TypeScript compiler is wrong.\r\n if (this._connectionState as any === ConnectionState.Disconnecting) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"Failed to start the HttpConnection before stop() was called.\";\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n // We cannot await stopPromise inside startInternal since stopInternal awaits the startInternalPromise.\r\n await this._stopPromise;\r\n\r\n return Promise.reject(new Error(message));\r\n } else if (this._connectionState as any !== ConnectionState.Connected) {\r\n // stop() was called and transitioned the client into the Disconnecting state.\r\n const message = \"HttpConnection.startInternal completed gracefully but didn't enter the connection into the connected state!\";\r\n this._logger.log(LogLevel.Error, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n\r\n this._connectionStarted = true;\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise {\r\n if (this._connectionState !== ConnectionState.Connected) {\r\n return Promise.reject(new Error(\"Cannot send data if the connection is not in the 'Connected' State.\"));\r\n }\r\n\r\n if (!this._sendQueue) {\r\n this._sendQueue = new TransportSendQueue(this.transport!);\r\n }\r\n\r\n // Transport will not be null if state is connected\r\n return this._sendQueue.send(data);\r\n }\r\n\r\n public async stop(error?: Error): Promise {\r\n if (this._connectionState === ConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise;\r\n }\r\n\r\n this._connectionState = ConnectionState.Disconnecting;\r\n\r\n this._stopPromise = new Promise((resolve) => {\r\n // Don't complete stop() until stopConnection() completes.\r\n this._stopPromiseResolver = resolve;\r\n });\r\n\r\n // stopInternal should never throw so just observe it.\r\n await this._stopInternal(error);\r\n await this._stopPromise;\r\n }\r\n\r\n private async _stopInternal(error?: Error): Promise {\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this._stopError = error;\r\n\r\n try {\r\n await this._startInternalPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n\r\n // The transport's onclose will trigger stopConnection which will run our onclose event.\r\n // The transport should always be set if currently connected. If it wasn't set, it's likely because\r\n // stop was called during start() and start() failed.\r\n if (this.transport) {\r\n try {\r\n await this.transport.stop();\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.transport.stop() threw error '${e}'.`);\r\n this._stopConnection();\r\n }\r\n\r\n this.transport = undefined;\r\n } else {\r\n this._logger.log(LogLevel.Debug, \"HttpConnection.transport is undefined in HttpConnection.stop() because start() failed.\");\r\n }\r\n }\r\n\r\n private async _startInternal(transferFormat: TransferFormat): Promise {\r\n // Store the original base url and the access token factory since they may change\r\n // as part of negotiating\r\n let url = this.baseUrl;\r\n this._accessTokenFactory = this._options.accessTokenFactory;\r\n\r\n try {\r\n if (this._options.skipNegotiation) {\r\n if (this._options.transport === HttpTransportType.WebSockets) {\r\n // No need to add a connection ID in this case\r\n this.transport = this._constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n await this._startTransport(url, transferFormat);\r\n } else {\r\n throw new Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n }\r\n } else {\r\n let negotiateResponse: INegotiateResponse | null = null;\r\n let redirects = 0;\r\n\r\n do {\r\n negotiateResponse = await this._getNegotiationResponse(url);\r\n // the user tries to stop the connection when it is being started\r\n if (this._connectionState === ConnectionState.Disconnecting || this._connectionState === ConnectionState.Disconnected) {\r\n throw new Error(\"The connection was stopped during negotiation.\");\r\n }\r\n\r\n if (negotiateResponse.error) {\r\n throw new Error(negotiateResponse.error);\r\n }\r\n\r\n if ((negotiateResponse as any).ProtocolVersion) {\r\n throw new Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n\r\n if (negotiateResponse.accessToken) {\r\n // Replace the current access token factory with one that uses\r\n // the returned access token\r\n const accessToken = negotiateResponse.accessToken;\r\n this._accessTokenFactory = () => accessToken;\r\n }\r\n\r\n redirects++;\r\n }\r\n while (negotiateResponse.url && redirects < MAX_REDIRECTS);\r\n\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw new Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n\r\n await this._createTransport(url, this._options.transport, negotiateResponse, transferFormat);\r\n }\r\n\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Connecting) {\r\n // Ensure the connection transitions to the connected state prior to completing this.startInternalPromise.\r\n // start() will handle the case when stop was called and startInternal exits still in the disconnecting state.\r\n this._logger.log(LogLevel.Debug, \"The HttpConnection connected successfully.\");\r\n this._connectionState = ConnectionState.Connected;\r\n }\r\n\r\n // stop() is waiting on us via this.startInternalPromise so keep this.transport around so it can clean up.\r\n // This is the only case startInternal can exit in neither the connected nor disconnected state because stopConnection()\r\n // will transition to the disconnected state. start() will wait for the transition using the stopPromise.\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, \"Failed to start the connection: \" + e);\r\n this._connectionState = ConnectionState.Disconnected;\r\n this.transport = undefined;\r\n\r\n // if start fails, any active calls to stop assume that start will complete the stop promise\r\n this._stopPromiseResolver();\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async _getNegotiationResponse(url: string): Promise {\r\n const headers: {[k: string]: string} = {};\r\n if (this._accessTokenFactory) {\r\n const token = await this._accessTokenFactory();\r\n if (token) {\r\n headers[HeaderNames.Authorization] = `Bearer ${token}`;\r\n }\r\n }\r\n\r\n const [name, value] = getUserAgentHeader();\r\n headers[name] = value;\r\n\r\n const negotiateUrl = this._resolveNegotiateUrl(url);\r\n this._logger.log(LogLevel.Debug, `Sending negotiation request: ${negotiateUrl}.`);\r\n try {\r\n const response = await this._httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: { ...headers, ...this._options.headers },\r\n timeout: this._options.timeout,\r\n withCredentials: this._options.withCredentials,\r\n });\r\n\r\n if (response.statusCode !== 200) {\r\n return Promise.reject(new Error(`Unexpected status code returned from negotiate '${response.statusCode}'`));\r\n }\r\n\r\n const negotiateResponse = JSON.parse(response.content as string) as INegotiateResponse;\r\n if (!negotiateResponse.negotiateVersion || negotiateResponse.negotiateVersion < 1) {\r\n // Negotiate version 0 doesn't use connectionToken\r\n // So we set it equal to connectionId so all our logic can use connectionToken without being aware of the negotiate version\r\n negotiateResponse.connectionToken = negotiateResponse.connectionId;\r\n }\r\n return negotiateResponse;\r\n } catch (e) {\r\n let errorMessage = \"Failed to complete negotiation with the server: \" + e;\r\n if (e instanceof HttpError) {\r\n if (e.statusCode === 404) {\r\n errorMessage = errorMessage + \" Either this is not a SignalR endpoint or there is a proxy blocking the connection.\";\r\n }\r\n }\r\n this._logger.log(LogLevel.Error, errorMessage);\r\n\r\n return Promise.reject(new FailedToNegotiateWithServerError(errorMessage));\r\n }\r\n }\r\n\r\n private _createConnectUrl(url: string, connectionToken: string | null | undefined) {\r\n if (!connectionToken) {\r\n return url;\r\n }\r\n\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + `id=${connectionToken}`;\r\n }\r\n\r\n private async _createTransport(url: string, requestedTransport: HttpTransportType | ITransport | undefined, negotiateResponse: INegotiateResponse, requestedTransferFormat: TransferFormat): Promise {\r\n let connectUrl = this._createConnectUrl(url, negotiateResponse.connectionToken);\r\n if (this._isITransport(requestedTransport)) {\r\n this._logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n\r\n this.connectionId = negotiateResponse.connectionId;\r\n return;\r\n }\r\n\r\n const transportExceptions: any[] = [];\r\n const transports = negotiateResponse.availableTransports || [];\r\n let negotiate: INegotiateResponse | undefined = negotiateResponse;\r\n for (const endpoint of transports) {\r\n const transportOrError = this._resolveTransportOrError(endpoint, requestedTransport, requestedTransferFormat);\r\n if (transportOrError instanceof Error) {\r\n // Store the error and continue, we don't want to cause a re-negotiate in these cases\r\n transportExceptions.push(`${endpoint.transport} failed:`);\r\n transportExceptions.push(transportOrError);\r\n } else if (this._isITransport(transportOrError)) {\r\n this.transport = transportOrError;\r\n if (!negotiate) {\r\n try {\r\n negotiate = await this._getNegotiationResponse(url);\r\n } catch (ex) {\r\n return Promise.reject(ex);\r\n }\r\n connectUrl = this._createConnectUrl(url, negotiate.connectionToken);\r\n }\r\n try {\r\n await this._startTransport(connectUrl, requestedTransferFormat);\r\n this.connectionId = negotiate.connectionId;\r\n return;\r\n } catch (ex) {\r\n this._logger.log(LogLevel.Error, `Failed to start the transport '${endpoint.transport}': ${ex}`);\r\n negotiate = undefined;\r\n transportExceptions.push(new FailedToStartTransportError(`${endpoint.transport} failed: ${ex}`, HttpTransportType[endpoint.transport]));\r\n\r\n if (this._connectionState !== ConnectionState.Connecting) {\r\n const message = \"Failed to select transport before stop() was called.\";\r\n this._logger.log(LogLevel.Debug, message);\r\n return Promise.reject(new Error(message));\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (transportExceptions.length > 0) {\r\n return Promise.reject(new AggregateErrors(`Unable to connect to the server with any of the available transports. ${transportExceptions.join(\" \")}`, transportExceptions));\r\n }\r\n return Promise.reject(new Error(\"None of the transports supported by the client are supported by the server.\"));\r\n }\r\n\r\n private _constructTransport(transport: HttpTransportType): ITransport {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this._options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options.logMessageContent!, this._options.WebSocket, this._options.headers || {});\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this._options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this._httpClient, this._accessTokenFactory, this._logger, this._options);\r\n default:\r\n throw new Error(`Unknown transport: ${transport}.`);\r\n }\r\n }\r\n\r\n private _startTransport(url: string, transferFormat: TransferFormat): Promise {\r\n this.transport!.onreceive = this.onreceive;\r\n this.transport!.onclose = (e) => this._stopConnection(e);\r\n return this.transport!.connect(url, transferFormat);\r\n }\r\n\r\n private _resolveTransportOrError(endpoint: IAvailableTransport, requestedTransport: HttpTransportType | undefined, requestedTransferFormat: TransferFormat): ITransport | Error {\r\n const transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n return new Error(`Skipping transport '${endpoint.transport}' because it is not supported by this client.`);\r\n } else {\r\n if (transportMatches(requestedTransport, transport)) {\r\n const transferFormats = endpoint.transferFormats.map((s) => TransferFormat[s]);\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this._options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this._options.EventSource)) {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it is not supported in your environment.'`);\r\n return new UnsupportedTransportError(`'${HttpTransportType[transport]}' is not supported in your environment.`, transport);\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Selecting transport '${HttpTransportType[transport]}'.`);\r\n try {\r\n return this._constructTransport(transport);\r\n } catch (ex) {\r\n return ex;\r\n }\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it does not support the requested transfer format '${TransferFormat[requestedTransferFormat]}'.`);\r\n return new Error(`'${HttpTransportType[transport]}' does not support ${TransferFormat[requestedTransferFormat]}.`);\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Debug, `Skipping transport '${HttpTransportType[transport]}' because it was disabled by the client.`);\r\n return new DisabledTransportError(`'${HttpTransportType[transport]}' is disabled by the client.`, transport);\r\n }\r\n }\r\n }\r\n\r\n private _isITransport(transport: any): transport is ITransport {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n }\r\n\r\n private _stopConnection(error?: Error): void {\r\n this._logger.log(LogLevel.Debug, `HttpConnection.stopConnection(${error}) called while in state ${this._connectionState}.`);\r\n\r\n this.transport = undefined;\r\n\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this._stopError || error;\r\n this._stopError = undefined;\r\n\r\n if (this._connectionState === ConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is already in the disconnected state.`);\r\n return;\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Connecting) {\r\n this._logger.log(LogLevel.Warning, `Call to HttpConnection.stopConnection(${error}) was ignored because the connection is still in the connecting state.`);\r\n throw new Error(`HttpConnection.stopConnection(${error}) was called while the connection is still in the connecting state.`);\r\n }\r\n\r\n if (this._connectionState === ConnectionState.Disconnecting) {\r\n // A call to stop() induced this call to stopConnection and needs to be completed.\r\n // Any stop() awaiters will be scheduled to continue after the onclose callback fires.\r\n this._stopPromiseResolver();\r\n }\r\n\r\n if (error) {\r\n this._logger.log(LogLevel.Error, `Connection disconnected with error '${error}'.`);\r\n } else {\r\n this._logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n\r\n if (this._sendQueue) {\r\n this._sendQueue.stop().catch((e) => {\r\n this._logger.log(LogLevel.Error, `TransportSendQueue.stop() threw error '${e}'.`);\r\n });\r\n this._sendQueue = undefined;\r\n }\r\n\r\n this.connectionId = undefined;\r\n this._connectionState = ConnectionState.Disconnected;\r\n\r\n if (this._connectionStarted) {\r\n this._connectionStarted = false;\r\n try {\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `HttpConnection.onclose(${error}) threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private _resolveUrl(url: string): string {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n\r\n if (!Platform.isBrowser) {\r\n throw new Error(`Cannot resolve '${url}'.`);\r\n }\r\n\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n const aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n\r\n this._logger.log(LogLevel.Information, `Normalizing '${url}' to '${aTag.href}'.`);\r\n return aTag.href;\r\n }\r\n\r\n private _resolveNegotiateUrl(url: string): string {\r\n const index = url.indexOf(\"?\");\r\n let negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n\r\n if (negotiateUrl.indexOf(\"negotiateVersion\") === -1) {\r\n negotiateUrl += index === -1 ? \"?\" : \"&\";\r\n negotiateUrl += \"negotiateVersion=\" + this._negotiateVersion;\r\n }\r\n return negotiateUrl;\r\n }\r\n}\r\n\r\nfunction transportMatches(requestedTransport: HttpTransportType | undefined, actualTransport: HttpTransportType) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n\r\n/** @private */\r\nexport class TransportSendQueue {\r\n private _buffer: any[] = [];\r\n private _sendBufferedData: PromiseSource;\r\n private _executing: boolean = true;\r\n private _transportResult?: PromiseSource;\r\n private _sendLoopPromise: Promise;\r\n\r\n constructor(private readonly _transport: ITransport) {\r\n this._sendBufferedData = new PromiseSource();\r\n this._transportResult = new PromiseSource();\r\n\r\n this._sendLoopPromise = this._sendLoop();\r\n }\r\n\r\n public send(data: string | ArrayBuffer): Promise {\r\n this._bufferData(data);\r\n if (!this._transportResult) {\r\n this._transportResult = new PromiseSource();\r\n }\r\n return this._transportResult.promise;\r\n }\r\n\r\n public stop(): Promise {\r\n this._executing = false;\r\n this._sendBufferedData.resolve();\r\n return this._sendLoopPromise;\r\n }\r\n\r\n private _bufferData(data: string | ArrayBuffer): void {\r\n if (this._buffer.length && typeof(this._buffer[0]) !== typeof(data)) {\r\n throw new Error(`Expected data to be of type ${typeof(this._buffer)} but was of type ${typeof(data)}`);\r\n }\r\n\r\n this._buffer.push(data);\r\n this._sendBufferedData.resolve();\r\n }\r\n\r\n private async _sendLoop(): Promise {\r\n while (true) {\r\n await this._sendBufferedData.promise;\r\n\r\n if (!this._executing) {\r\n if (this._transportResult) {\r\n this._transportResult.reject(\"Connection stopped.\");\r\n }\r\n\r\n break;\r\n }\r\n\r\n this._sendBufferedData = new PromiseSource();\r\n\r\n const transportResult = this._transportResult!;\r\n this._transportResult = undefined;\r\n\r\n const data = typeof(this._buffer[0]) === \"string\" ?\r\n this._buffer.join(\"\") :\r\n TransportSendQueue._concatBuffers(this._buffer);\r\n\r\n this._buffer.length = 0;\r\n\r\n try {\r\n await this._transport.send(data);\r\n transportResult.resolve();\r\n } catch (error) {\r\n transportResult.reject(error);\r\n }\r\n }\r\n }\r\n\r\n private static _concatBuffers(arrayBuffers: ArrayBuffer[]): ArrayBuffer {\r\n const totalLength = arrayBuffers.map((b) => b.byteLength).reduce((a, b) => a + b);\r\n const result = new Uint8Array(totalLength);\r\n let offset = 0;\r\n for (const item of arrayBuffers) {\r\n result.set(new Uint8Array(item), offset);\r\n offset += item.byteLength;\r\n }\r\n\r\n return result.buffer;\r\n }\r\n}\r\n\r\nclass PromiseSource {\r\n private _resolver?: () => void;\r\n private _rejecter!: (reason?: any) => void;\r\n public promise: Promise;\r\n\r\n constructor() {\r\n this.promise = new Promise((resolve, reject) => [this._resolver, this._rejecter] = [resolve, reject]);\r\n }\r\n\r\n public resolve(): void {\r\n this._resolver!();\r\n }\r\n\r\n public reject(reason?: any): void {\r\n this._rejecter!(reason);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\n// Not exported from index\r\n/** @private */\r\nexport class TextMessageFormat {\r\n public static RecordSeparatorCode = 0x1e;\r\n public static RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n\r\n public static write(output: string): string {\r\n return `${output}${TextMessageFormat.RecordSeparator}`;\r\n }\r\n\r\n public static parse(input: string): string[] {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n const messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n\r\n/** @private */\r\nexport interface HandshakeRequestMessage {\r\n readonly protocol: string;\r\n readonly version: number;\r\n}\r\n\r\n/** @private */\r\nexport interface HandshakeResponseMessage {\r\n readonly error: string;\r\n readonly minorVersion: number;\r\n}\r\n\r\n/** @private */\r\nexport class HandshakeProtocol {\r\n // Handshake request is always JSON\r\n public writeHandshakeRequest(handshakeRequest: HandshakeRequestMessage): string {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n }\r\n\r\n public parseHandshakeResponse(data: any): [any, HandshakeResponseMessage] {\r\n let messageData: string;\r\n let remainingData: any;\r\n\r\n if (isArrayBuffer(data)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n const binaryData = new Uint8Array(data);\r\n const separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, Array.prototype.slice.call(binaryData.slice(0, responseLength)));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n } else {\r\n const textData: string = data;\r\n const separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n const responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n\r\n // At this point we should have just the single handshake message\r\n const messages = TextMessageFormat.parse(messageData);\r\n const response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n const responseMessage: HandshakeResponseMessage = response;\r\n\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { ILogger } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\n\r\n/** Defines the type of a Hub Message. */\r\nexport enum MessageType {\r\n /** Indicates the message is an Invocation message and implements the {@link @microsoft/signalr.InvocationMessage} interface. */\r\n Invocation = 1,\r\n /** Indicates the message is a StreamItem message and implements the {@link @microsoft/signalr.StreamItemMessage} interface. */\r\n StreamItem = 2,\r\n /** Indicates the message is a Completion message and implements the {@link @microsoft/signalr.CompletionMessage} interface. */\r\n Completion = 3,\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @microsoft/signalr.StreamInvocationMessage} interface. */\r\n StreamInvocation = 4,\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @microsoft/signalr.CancelInvocationMessage} interface. */\r\n CancelInvocation = 5,\r\n /** Indicates the message is a Ping message and implements the {@link @microsoft/signalr.PingMessage} interface. */\r\n Ping = 6,\r\n /** Indicates the message is a Close message and implements the {@link @microsoft/signalr.CloseMessage} interface. */\r\n Close = 7,\r\n}\r\n\r\n/** Defines a dictionary of string keys and string values representing headers attached to a Hub message. */\r\nexport interface MessageHeaders {\r\n /** Gets or sets the header with the specified key. */\r\n [key: string]: string;\r\n}\r\n\r\n/** Union type of all known Hub messages. */\r\nexport type HubMessage =\r\n InvocationMessage |\r\n StreamInvocationMessage |\r\n StreamItemMessage |\r\n CompletionMessage |\r\n CancelInvocationMessage |\r\n PingMessage |\r\n CloseMessage;\r\n\r\n/** Defines properties common to all Hub messages. */\r\nexport interface HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageType} value indicating the type of this message. */\r\n readonly type: MessageType;\r\n}\r\n\r\n/** Defines properties common to all Hub messages relating to a specific invocation. */\r\nexport interface HubInvocationMessage extends HubMessageBase {\r\n /** A {@link @microsoft/signalr.MessageHeaders} dictionary containing headers attached to the message. */\r\n readonly headers?: MessageHeaders;\r\n /** The ID of the invocation relating to this message.\r\n *\r\n * This is expected to be present for {@link @microsoft/signalr.StreamInvocationMessage} and {@link @microsoft/signalr.CompletionMessage}. It may\r\n * be 'undefined' for an {@link @microsoft/signalr.InvocationMessage} if the sender does not expect a response.\r\n */\r\n readonly invocationId?: string;\r\n}\r\n\r\n/** A hub message representing a non-streaming invocation. */\r\nexport interface InvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Invocation;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a streaming invocation. */\r\nexport interface StreamInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamInvocation;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The target method name. */\r\n readonly target: string;\r\n /** The target method arguments. */\r\n readonly arguments: any[];\r\n /** The target methods stream IDs. */\r\n readonly streamIds?: string[];\r\n}\r\n\r\n/** A hub message representing a single item produced as part of a result stream. */\r\nexport interface StreamItemMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.StreamItem;\r\n\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n\r\n /** The item produced by the server. */\r\n readonly item?: any;\r\n}\r\n\r\n/** A hub message representing the result of an invocation. */\r\nexport interface CompletionMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Completion;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n /** The error produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly error?: string;\r\n /** The result produced by the invocation, if any.\r\n *\r\n * Either {@link @microsoft/signalr.CompletionMessage.error} or {@link @microsoft/signalr.CompletionMessage.result} must be defined, but not both.\r\n */\r\n readonly result?: any;\r\n}\r\n\r\n/** A hub message indicating that the sender is still active. */\r\nexport interface PingMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Ping;\r\n}\r\n\r\n/** A hub message indicating that the sender is closing the connection.\r\n *\r\n * If {@link @microsoft/signalr.CloseMessage.error} is defined, the sender is closing the connection due to an error.\r\n */\r\nexport interface CloseMessage extends HubMessageBase {\r\n /** @inheritDoc */\r\n readonly type: MessageType.Close;\r\n /** The error that triggered the close, if any.\r\n *\r\n * If this property is undefined, the connection was closed normally and without error.\r\n */\r\n readonly error?: string;\r\n\r\n /** If true, clients with automatic reconnects enabled should attempt to reconnect after receiving the CloseMessage. Otherwise, they should not. */\r\n readonly allowReconnect?: boolean;\r\n}\r\n\r\n/** A hub message sent to request that a streaming invocation be canceled. */\r\nexport interface CancelInvocationMessage extends HubInvocationMessage {\r\n /** @inheritDoc */\r\n readonly type: MessageType.CancelInvocation;\r\n /** The invocation ID. */\r\n readonly invocationId: string;\r\n}\r\n\r\n/** A protocol abstraction for communicating with SignalR Hubs. */\r\nexport interface IHubProtocol {\r\n /** The name of the protocol. This is used by SignalR to resolve the protocol between the client and server. */\r\n readonly name: string;\r\n /** The version of the protocol. */\r\n readonly version: number;\r\n /** The {@link @microsoft/signalr.TransferFormat} of the protocol. */\r\n readonly transferFormat: TransferFormat;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the `input` parameter must be a string, otherwise it must be an ArrayBuffer.\r\n *\r\n * @param {string | ArrayBuffer} input A string or ArrayBuffer containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n parseMessages(input: string | ArrayBuffer, logger: ILogger): HubMessage[];\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string or ArrayBuffer and returns it.\r\n *\r\n * If {@link @microsoft/signalr.IHubProtocol.transferFormat} is 'Text', the result of this method will be a string, otherwise it will be an ArrayBuffer.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string | ArrayBuffer} A string or ArrayBuffer containing the serialized representation of the message.\r\n */\r\n writeMessage(message: HubMessage): string | ArrayBuffer;\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { IStreamResult, IStreamSubscriber, ISubscription } from \"./Stream\";\r\nimport { SubjectSubscription } from \"./Utils\";\r\n\r\n/** Stream implementation to stream items to the server. */\r\nexport class Subject implements IStreamResult {\r\n /** @internal */\r\n public observers: IStreamSubscriber[];\r\n\r\n /** @internal */\r\n public cancelCallback?: () => Promise;\r\n\r\n constructor() {\r\n this.observers = [];\r\n }\r\n\r\n public next(item: T): void {\r\n for (const observer of this.observers) {\r\n observer.next(item);\r\n }\r\n }\r\n\r\n public error(err: any): void {\r\n for (const observer of this.observers) {\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n }\r\n\r\n public complete(): void {\r\n for (const observer of this.observers) {\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n }\r\n\r\n public subscribe(observer: IStreamSubscriber): ISubscription {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { HandshakeProtocol, HandshakeRequestMessage, HandshakeResponseMessage } from \"./HandshakeProtocol\";\r\nimport { IConnection } from \"./IConnection\";\r\nimport { CancelInvocationMessage, CompletionMessage, IHubProtocol, InvocationMessage, MessageType, StreamInvocationMessage, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { IStreamResult } from \"./Stream\";\r\nimport { Subject } from \"./Subject\";\r\nimport { Arg, getErrorString, Platform } from \"./Utils\";\r\n\r\nconst DEFAULT_TIMEOUT_IN_MS: number = 30 * 1000;\r\nconst DEFAULT_PING_INTERVAL_IN_MS: number = 15 * 1000;\r\n\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport enum HubConnectionState {\r\n /** The hub connection is disconnected. */\r\n Disconnected = \"Disconnected\",\r\n /** The hub connection is connecting. */\r\n Connecting = \"Connecting\",\r\n /** The hub connection is connected. */\r\n Connected = \"Connected\",\r\n /** The hub connection is disconnecting. */\r\n Disconnecting = \"Disconnecting\",\r\n /** The hub connection is reconnecting. */\r\n Reconnecting = \"Reconnecting\",\r\n}\r\n\r\n/** Represents a connection to a SignalR Hub. */\r\nexport class HubConnection {\r\n private readonly _cachedPingMessage: string | ArrayBuffer;\r\n // Needs to not start with _ for tests\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private readonly connection: IConnection;\r\n private readonly _logger: ILogger;\r\n private readonly _reconnectPolicy?: IRetryPolicy;\r\n private _protocol: IHubProtocol;\r\n private _handshakeProtocol: HandshakeProtocol;\r\n private _callbacks: { [invocationId: string]: (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => void };\r\n private _methods: { [name: string]: ((...args: any[]) => void)[] };\r\n private _invocationId: number;\r\n\r\n private _closedCallbacks: ((error?: Error) => void)[];\r\n private _reconnectingCallbacks: ((error?: Error) => void)[];\r\n private _reconnectedCallbacks: ((connectionId?: string) => void)[];\r\n\r\n private _receivedHandshakeResponse: boolean;\r\n private _handshakeResolver!: (value?: PromiseLike<{}>) => void;\r\n private _handshakeRejecter!: (reason?: any) => void;\r\n private _stopDuringStartError?: Error;\r\n\r\n private _connectionState: HubConnectionState;\r\n // connectionStarted is tracked independently from connectionState, so we can check if the\r\n // connection ever did successfully transition from connecting to connected before disconnecting.\r\n private _connectionStarted: boolean;\r\n private _startPromise?: Promise;\r\n private _stopPromise?: Promise;\r\n private _nextKeepAlive: number = 0;\r\n\r\n // The type of these a) doesn't matter and b) varies when building in browser and node contexts\r\n // Since we're building the WebPack bundle directly from the TypeScript, this matters (previously\r\n // we built the bundle from the compiled JavaScript).\r\n private _reconnectDelayHandle?: any;\r\n private _timeoutHandle?: any;\r\n private _pingServerHandle?: any;\r\n\r\n private _freezeEventListener = () =>\r\n {\r\n this._logger.log(LogLevel.Warning, \"The page is being frozen, this will likely lead to the connection being closed and messages being lost. For more information see the docs at https://docs.microsoft.com/aspnet/core/signalr/javascript-client#bsleep\");\r\n };\r\n\r\n /** The server timeout in milliseconds.\r\n *\r\n * If this timeout elapses without receiving any messages from the server, the connection will be terminated with an error.\r\n * The default timeout value is 30,000 milliseconds (30 seconds).\r\n */\r\n public serverTimeoutInMilliseconds: number;\r\n\r\n /** Default interval at which to ping the server.\r\n *\r\n * The default value is 15,000 milliseconds (15 seconds).\r\n * Allows the server to detect hard disconnects (like when a client unplugs their computer).\r\n * The ping will happen at most as often as the server pings.\r\n * If the server pings every 5 seconds, a value lower than 5 will ping every 5 seconds.\r\n */\r\n public keepAliveIntervalInMilliseconds: number;\r\n\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n public static create(connection: IConnection, logger: ILogger, protocol: IHubProtocol, reconnectPolicy?: IRetryPolicy): HubConnection {\r\n return new HubConnection(connection, logger, protocol, reconnectPolicy);\r\n }\r\n\r\n private constructor(connection: IConnection, logger: ILogger, protocol: IHubProtocol, reconnectPolicy?: IRetryPolicy) {\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n\r\n this._logger = logger;\r\n this._protocol = protocol;\r\n this.connection = connection;\r\n this._reconnectPolicy = reconnectPolicy;\r\n this._handshakeProtocol = new HandshakeProtocol();\r\n\r\n this.connection.onreceive = (data: any) => this._processIncomingData(data);\r\n this.connection.onclose = (error?: Error) => this._connectionClosed(error);\r\n\r\n this._callbacks = {};\r\n this._methods = {};\r\n this._closedCallbacks = [];\r\n this._reconnectingCallbacks = [];\r\n this._reconnectedCallbacks = [];\r\n this._invocationId = 0;\r\n this._receivedHandshakeResponse = false;\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n\r\n this._cachedPingMessage = this._protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get state(): HubConnectionState {\r\n return this._connectionState;\r\n }\r\n\r\n /** Represents the connection id of the {@link HubConnection} on the server. The connection id will be null when the connection is either\r\n * in the disconnected state or if the negotiation step was skipped.\r\n */\r\n get connectionId(): string | null {\r\n return this.connection ? (this.connection.connectionId || null) : null;\r\n }\r\n\r\n /** Indicates the url of the {@link HubConnection} to the server. */\r\n get baseUrl(): string {\r\n return this.connection.baseUrl || \"\";\r\n }\r\n\r\n /**\r\n * Sets a new url for the HubConnection. Note that the url can only be changed when the connection is in either the Disconnected or\r\n * Reconnecting states.\r\n * @param {string} url The url to connect to.\r\n */\r\n set baseUrl(url: string) {\r\n if (this._connectionState !== HubConnectionState.Disconnected && this._connectionState !== HubConnectionState.Reconnecting) {\r\n throw new Error(\"The HubConnection must be in the Disconnected or Reconnecting state to change the url.\");\r\n }\r\n\r\n if (!url) {\r\n throw new Error(\"The HubConnection url must be a valid url.\");\r\n }\r\n\r\n this.connection.baseUrl = url;\r\n }\r\n\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n public start(): Promise {\r\n this._startPromise = this._startWithStateTransitions();\r\n return this._startPromise;\r\n }\r\n\r\n private async _startWithStateTransitions(): Promise {\r\n if (this._connectionState !== HubConnectionState.Disconnected) {\r\n return Promise.reject(new Error(\"Cannot start a HubConnection that is not in the 'Disconnected' state.\"));\r\n }\r\n\r\n this._connectionState = HubConnectionState.Connecting;\r\n this._logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n\r\n try {\r\n await this._startInternal();\r\n\r\n if (Platform.isBrowser) {\r\n // Log when the browser freezes the tab so users know why their connection unexpectedly stopped working\r\n window.document.addEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n\r\n this._connectionState = HubConnectionState.Connected;\r\n this._connectionStarted = true;\r\n this._logger.log(LogLevel.Debug, \"HubConnection connected successfully.\");\r\n } catch (e) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._logger.log(LogLevel.Debug, `HubConnection failed to start successfully because of error '${e}'.`);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n private async _startInternal() {\r\n this._stopDuringStartError = undefined;\r\n this._receivedHandshakeResponse = false;\r\n // Set up the promise before any connection is (re)started otherwise it could race with received messages\r\n const handshakePromise = new Promise((resolve, reject) => {\r\n this._handshakeResolver = resolve;\r\n this._handshakeRejecter = reject;\r\n });\r\n\r\n await this.connection.start(this._protocol.transferFormat);\r\n\r\n try {\r\n const handshakeRequest: HandshakeRequestMessage = {\r\n protocol: this._protocol.name,\r\n version: this._protocol.version,\r\n };\r\n\r\n this._logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n\r\n await this._sendMessage(this._handshakeProtocol.writeHandshakeRequest(handshakeRequest));\r\n\r\n this._logger.log(LogLevel.Information, `Using HubProtocol '${this._protocol.name}'.`);\r\n\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this._cleanupTimeout();\r\n this._resetTimeoutPeriod();\r\n this._resetKeepAliveInterval();\r\n\r\n await handshakePromise;\r\n\r\n // It's important to check the stopDuringStartError instead of just relying on the handshakePromise\r\n // being rejected on close, because this continuation can run after both the handshake completed successfully\r\n // and the connection was closed.\r\n if (this._stopDuringStartError) {\r\n // It's important to throw instead of returning a rejected promise, because we don't want to allow any state\r\n // transitions to occur between now and the calling code observing the exceptions. Returning a rejected promise\r\n // will cause the calling continuation to get scheduled to run later.\r\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\r\n throw this._stopDuringStartError;\r\n }\r\n } catch (e) {\r\n this._logger.log(LogLevel.Debug, `Hub handshake failed with error '${e}' during start(). Stopping HubConnection.`);\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n\r\n // HttpConnection.stop() should not complete until after the onclose callback is invoked.\r\n // This will transition the HubConnection to the disconnected state before HttpConnection.stop() completes.\r\n await this.connection.stop(e);\r\n throw e;\r\n }\r\n }\r\n\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n public async stop(): Promise {\r\n // Capture the start promise before the connection might be restarted in an onclose callback.\r\n const startPromise = this._startPromise;\r\n\r\n this._stopPromise = this._stopInternal();\r\n await this._stopPromise;\r\n\r\n try {\r\n // Awaiting undefined continues immediately\r\n await startPromise;\r\n } catch (e) {\r\n // This exception is returned to the user as a rejected Promise from the start method.\r\n }\r\n }\r\n\r\n private _stopInternal(error?: Error): Promise {\r\n if (this._connectionState === HubConnectionState.Disconnected) {\r\n this._logger.log(LogLevel.Debug, `Call to HubConnection.stop(${error}) ignored because it is already in the disconnected state.`);\r\n return Promise.resolve();\r\n }\r\n\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._logger.log(LogLevel.Debug, `Call to HttpConnection.stop(${error}) ignored because the connection is already in the disconnecting state.`);\r\n return this._stopPromise!;\r\n }\r\n\r\n this._connectionState = HubConnectionState.Disconnecting;\r\n\r\n this._logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n\r\n if (this._reconnectDelayHandle) {\r\n // We're in a reconnect delay which means the underlying connection is currently already stopped.\r\n // Just clear the handle to stop the reconnect loop (which no one is waiting on thankfully) and\r\n // fire the onclose callbacks.\r\n this._logger.log(LogLevel.Debug, \"Connection stopped during reconnect delay. Done reconnecting.\");\r\n\r\n clearTimeout(this._reconnectDelayHandle);\r\n this._reconnectDelayHandle = undefined;\r\n\r\n this._completeClose();\r\n return Promise.resolve();\r\n }\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n this._stopDuringStartError = error || new Error(\"The connection was stopped before the hub handshake could complete.\");\r\n\r\n // HttpConnection.stop() should not complete until after either HttpConnection.start() fails\r\n // or the onclose callback is invoked. The onclose callback will transition the HubConnection\r\n // to the disconnected state if need be before HttpConnection.stop() completes.\r\n return this.connection.stop(error);\r\n }\r\n\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n public stream(methodName: string, ...args: any[]): IStreamResult {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createStreamInvocation(methodName, args, streamIds);\r\n\r\n // eslint-disable-next-line prefer-const\r\n let promiseQueue: Promise;\r\n\r\n const subject = new Subject();\r\n subject.cancelCallback = () => {\r\n const cancelInvocation: CancelInvocationMessage = this._createCancelInvocation(invocationDescriptor.invocationId);\r\n\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n\r\n return promiseQueue.then(() => {\r\n return this._sendWithProtocol(cancelInvocation);\r\n });\r\n };\r\n\r\n this._callbacks[invocationDescriptor.invocationId] = (invocationEvent: CompletionMessage | StreamItemMessage | null, error?: Error) => {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n } else {\r\n subject.complete();\r\n }\r\n } else {\r\n subject.next((invocationEvent.item) as T);\r\n }\r\n }\r\n };\r\n\r\n promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n subject.error(e);\r\n delete this._callbacks[invocationDescriptor.invocationId];\r\n });\r\n\r\n this._launchStreams(streams, promiseQueue);\r\n\r\n return subject;\r\n }\r\n\r\n private _sendMessage(message: any) {\r\n this._resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n }\r\n\r\n /**\r\n * Sends a js object to the server.\r\n * @param message The js object to serialize and send.\r\n */\r\n private _sendWithProtocol(message: any) {\r\n return this._sendMessage(this._protocol.writeMessage(message));\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n public send(methodName: string, ...args: any[]): Promise {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const sendPromise = this._sendWithProtocol(this._createInvocation(methodName, args, true, streamIds));\r\n\r\n this._launchStreams(streams, sendPromise);\r\n\r\n return sendPromise;\r\n }\r\n\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n public invoke(methodName: string, ...args: any[]): Promise {\r\n const [streams, streamIds] = this._replaceStreamingParams(args);\r\n const invocationDescriptor = this._createInvocation(methodName, args, false, streamIds);\r\n\r\n const p = new Promise((resolve, reject) => {\r\n // invocationId will always have a value for a non-blocking invocation\r\n this._callbacks[invocationDescriptor.invocationId!] = (invocationEvent: StreamItemMessage | CompletionMessage | null, error?: Error) => {\r\n if (error) {\r\n reject(error);\r\n return;\r\n } else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n } else {\r\n resolve(invocationEvent.result);\r\n }\r\n } else {\r\n reject(new Error(`Unexpected message type: ${invocationEvent.type}`));\r\n }\r\n }\r\n };\r\n\r\n const promiseQueue = this._sendWithProtocol(invocationDescriptor)\r\n .catch((e) => {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete this._callbacks[invocationDescriptor.invocationId!];\r\n });\r\n\r\n this._launchStreams(streams, promiseQueue);\r\n });\r\n\r\n return p;\r\n }\r\n\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n public on(methodName: string, newMethod: (...args: any[]) => void): void {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n if (!this._methods[methodName]) {\r\n this._methods[methodName] = [];\r\n }\r\n\r\n // Preventing adding the same handler multiple times.\r\n if (this._methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n\r\n this._methods[methodName].push(newMethod);\r\n }\r\n\r\n /** Removes all handlers for the specified hub method.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n */\r\n public off(methodName: string): void;\r\n\r\n /** Removes the specified handler for the specified hub method.\r\n *\r\n * You must pass the exact same Function instance as was previously passed to {@link @microsoft/signalr.HubConnection.on}. Passing a different instance (even if the function\r\n * body is the same) will not remove the handler.\r\n *\r\n * @param {string} methodName The name of the method to remove handlers for.\r\n * @param {Function} method The handler to remove. This must be the same Function instance as the one passed to {@link @microsoft/signalr.HubConnection.on}.\r\n */\r\n public off(methodName: string, method: (...args: any[]) => void): void;\r\n public off(methodName: string, method?: (...args: any[]) => void): void {\r\n if (!methodName) {\r\n return;\r\n }\r\n\r\n methodName = methodName.toLowerCase();\r\n const handlers = this._methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n const removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this._methods[methodName];\r\n }\r\n }\r\n } else {\r\n delete this._methods[methodName];\r\n }\r\n\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n public onclose(callback: (error?: Error) => void): void {\r\n if (callback) {\r\n this._closedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection starts reconnecting.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection starts reconnecting. Optionally receives a single argument containing the error that caused the connection to start reconnecting (if any).\r\n */\r\n public onreconnecting(callback: (error?: Error) => void): void {\r\n if (callback) {\r\n this._reconnectingCallbacks.push(callback);\r\n }\r\n }\r\n\r\n /** Registers a handler that will be invoked when the connection successfully reconnects.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection successfully reconnects.\r\n */\r\n public onreconnected(callback: (connectionId?: string) => void): void {\r\n if (callback) {\r\n this._reconnectedCallbacks.push(callback);\r\n }\r\n }\r\n\r\n private _processIncomingData(data: any) {\r\n this._cleanupTimeout();\r\n\r\n if (!this._receivedHandshakeResponse) {\r\n data = this._processHandshakeResponse(data);\r\n this._receivedHandshakeResponse = true;\r\n }\r\n\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n const messages = this._protocol.parseMessages(data, this._logger);\r\n\r\n for (const message of messages) {\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this._invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion: {\r\n const callback = this._callbacks[message.invocationId];\r\n if (callback) {\r\n if (message.type === MessageType.Completion) {\r\n delete this._callbacks[message.invocationId];\r\n }\r\n try {\r\n callback(message);\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream callback threw error: ${getErrorString(e)}`);\r\n }\r\n }\r\n break;\r\n }\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close: {\r\n this._logger.log(LogLevel.Information, \"Close message received from server.\");\r\n\r\n const error = message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined;\r\n\r\n if (message.allowReconnect === true) {\r\n // It feels wrong not to await connection.stop() here, but processIncomingData is called as part of an onreceive callback which is not async,\r\n // this is already the behavior for serverTimeout(), and HttpConnection.Stop() should catch and log all possible exceptions.\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(error);\r\n } else {\r\n // We cannot await stopInternal() here, but subsequent calls to stop() will await this if stopInternal() is still ongoing.\r\n this._stopPromise = this._stopInternal(error);\r\n }\r\n\r\n break;\r\n }\r\n default:\r\n this._logger.log(LogLevel.Warning, `Invalid message type: ${message.type}.`);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this._resetTimeoutPeriod();\r\n }\r\n\r\n private _processHandshakeResponse(data: any): any {\r\n let responseMessage: HandshakeResponseMessage;\r\n let remainingData: any;\r\n\r\n try {\r\n [remainingData, responseMessage] = this._handshakeProtocol.parseHandshakeResponse(data);\r\n } catch (e) {\r\n const message = \"Error parsing handshake response: \" + e;\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n const message = \"Server returned handshake error: \" + responseMessage.error;\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n const error = new Error(message);\r\n this._handshakeRejecter(error);\r\n throw error;\r\n } else {\r\n this._logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n\r\n this._handshakeResolver();\r\n return remainingData;\r\n }\r\n\r\n private _resetKeepAliveInterval() {\r\n if (this.connection.features.inherentKeepAlive) {\r\n return;\r\n }\r\n\r\n // Set the time we want the next keep alive to be sent\r\n // Timer will be setup on next message receive\r\n this._nextKeepAlive = new Date().getTime() + this.keepAliveIntervalInMilliseconds;\r\n\r\n this._cleanupPingTimer();\r\n }\r\n\r\n private _resetTimeoutPeriod() {\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this._timeoutHandle = setTimeout(() => this.serverTimeout(), this.serverTimeoutInMilliseconds);\r\n\r\n // Set keepAlive timer if there isn't one\r\n if (this._pingServerHandle === undefined)\r\n {\r\n let nextPing = this._nextKeepAlive - new Date().getTime();\r\n if (nextPing < 0) {\r\n nextPing = 0;\r\n }\r\n\r\n // The timer needs to be set from a networking callback to avoid Chrome timer throttling from causing timers to run once a minute\r\n this._pingServerHandle = setTimeout(async () => {\r\n if (this._connectionState === HubConnectionState.Connected) {\r\n try {\r\n await this._sendMessage(this._cachedPingMessage);\r\n } catch {\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this._cleanupPingTimer();\r\n }\r\n }\r\n }, nextPing);\r\n }\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n private serverTimeout() {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise. This could trigger reconnecting.\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n }\r\n\r\n private _invokeClientMethod(invocationMessage: InvocationMessage) {\r\n const methods = this._methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n try {\r\n methods.forEach((m) => m.apply(this, invocationMessage.arguments));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `A callback for the method ${invocationMessage.target.toLowerCase()} threw error '${e}'.`);\r\n }\r\n\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n const message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this._logger.log(LogLevel.Error, message);\r\n\r\n // We don't want to wait on the stop itself.\r\n this._stopPromise = this._stopInternal(new Error(message));\r\n }\r\n } else {\r\n this._logger.log(LogLevel.Warning, `No client method with the name '${invocationMessage.target}' found.`);\r\n }\r\n }\r\n\r\n private _connectionClosed(error?: Error) {\r\n this._logger.log(LogLevel.Debug, `HubConnection.connectionClosed(${error}) called while in state ${this._connectionState}.`);\r\n\r\n // Triggering this.handshakeRejecter is insufficient because it could already be resolved without the continuation having run yet.\r\n this._stopDuringStartError = this._stopDuringStartError || error || new Error(\"The underlying connection was closed before the hub handshake could complete.\");\r\n\r\n // If the handshake is in progress, start will be waiting for the handshake promise, so we complete it.\r\n // If it has already completed, this should just noop.\r\n if (this._handshakeResolver) {\r\n this._handshakeResolver();\r\n }\r\n\r\n this._cancelCallbacksWithError(error || new Error(\"Invocation canceled due to the underlying connection being closed.\"));\r\n\r\n this._cleanupTimeout();\r\n this._cleanupPingTimer();\r\n\r\n if (this._connectionState === HubConnectionState.Disconnecting) {\r\n this._completeClose(error);\r\n } else if (this._connectionState === HubConnectionState.Connected && this._reconnectPolicy) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this._reconnect(error);\r\n } else if (this._connectionState === HubConnectionState.Connected) {\r\n this._completeClose(error);\r\n }\r\n\r\n // If none of the above if conditions were true were called the HubConnection must be in either:\r\n // 1. The Connecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail it.\r\n // 2. The Reconnecting state in which case the handshakeResolver will complete it and stopDuringStartError will fail the current reconnect attempt\r\n // and potentially continue the reconnect() loop.\r\n // 3. The Disconnected state in which case we're already done.\r\n }\r\n\r\n private _completeClose(error?: Error) {\r\n if (this._connectionStarted) {\r\n this._connectionState = HubConnectionState.Disconnected;\r\n this._connectionStarted = false;\r\n\r\n if (Platform.isBrowser) {\r\n window.document.removeEventListener(\"freeze\", this._freezeEventListener);\r\n }\r\n\r\n try {\r\n this._closedCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onclose callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n }\r\n }\r\n\r\n private async _reconnect(error?: Error) {\r\n const reconnectStartTime = Date.now();\r\n let previousReconnectAttempts = 0;\r\n let retryError = error !== undefined ? error : new Error(\"Attempting to reconnect due to a unknown error.\");\r\n\r\n let nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, 0, retryError);\r\n\r\n if (nextRetryDelay === null) {\r\n this._logger.log(LogLevel.Debug, \"Connection not reconnecting because the IRetryPolicy returned null on the first reconnect attempt.\");\r\n this._completeClose(error);\r\n return;\r\n }\r\n\r\n this._connectionState = HubConnectionState.Reconnecting;\r\n\r\n if (error) {\r\n this._logger.log(LogLevel.Information, `Connection reconnecting because of error '${error}'.`);\r\n } else {\r\n this._logger.log(LogLevel.Information, \"Connection reconnecting.\");\r\n }\r\n\r\n if (this._reconnectingCallbacks.length !== 0) {\r\n try {\r\n this._reconnectingCallbacks.forEach((c) => c.apply(this, [error]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnecting callback called with error '${error}' threw error '${e}'.`);\r\n }\r\n\r\n // Exit early if an onreconnecting callback called connection.stop().\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state in onreconnecting callback. Done reconnecting.\");\r\n return;\r\n }\r\n }\r\n\r\n while (nextRetryDelay !== null) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt number ${previousReconnectAttempts} will start in ${nextRetryDelay} ms.`);\r\n\r\n await new Promise((resolve) => {\r\n this._reconnectDelayHandle = setTimeout(resolve, nextRetryDelay!);\r\n });\r\n this._reconnectDelayHandle = undefined;\r\n\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, \"Connection left the reconnecting state during reconnect delay. Done reconnecting.\");\r\n return;\r\n }\r\n\r\n try {\r\n await this._startInternal();\r\n\r\n this._connectionState = HubConnectionState.Connected;\r\n this._logger.log(LogLevel.Information, \"HubConnection reconnected successfully.\");\r\n\r\n if (this._reconnectedCallbacks.length !== 0) {\r\n try {\r\n this._reconnectedCallbacks.forEach((c) => c.apply(this, [this.connection.connectionId]));\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `An onreconnected callback called with connectionId '${this.connection.connectionId}; threw error '${e}'.`);\r\n }\r\n }\r\n\r\n return;\r\n } catch (e) {\r\n this._logger.log(LogLevel.Information, `Reconnect attempt failed because of error '${e}'.`);\r\n\r\n if (this._connectionState !== HubConnectionState.Reconnecting) {\r\n this._logger.log(LogLevel.Debug, `Connection moved to the '${this._connectionState}' from the reconnecting state during reconnect attempt. Done reconnecting.`);\r\n // The TypeScript compiler thinks that connectionState must be Connected here. The TypeScript compiler is wrong.\r\n if (this._connectionState as any === HubConnectionState.Disconnecting) {\r\n this._completeClose();\r\n }\r\n return;\r\n }\r\n\r\n retryError = e instanceof Error ? e : new Error(e.toString());\r\n nextRetryDelay = this._getNextRetryDelay(previousReconnectAttempts++, Date.now() - reconnectStartTime, retryError);\r\n }\r\n }\r\n\r\n this._logger.log(LogLevel.Information, `Reconnect retries have been exhausted after ${Date.now() - reconnectStartTime} ms and ${previousReconnectAttempts} failed attempts. Connection disconnecting.`);\r\n\r\n this._completeClose();\r\n }\r\n\r\n private _getNextRetryDelay(previousRetryCount: number, elapsedMilliseconds: number, retryReason: Error) {\r\n try {\r\n return this._reconnectPolicy!.nextRetryDelayInMilliseconds({\r\n elapsedMilliseconds,\r\n previousRetryCount,\r\n retryReason,\r\n });\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `IRetryPolicy.nextRetryDelayInMilliseconds(${previousRetryCount}, ${elapsedMilliseconds}) threw error '${e}'.`);\r\n return null;\r\n }\r\n }\r\n\r\n private _cancelCallbacksWithError(error: Error) {\r\n const callbacks = this._callbacks;\r\n this._callbacks = {};\r\n\r\n Object.keys(callbacks)\r\n .forEach((key) => {\r\n const callback = callbacks[key];\r\n try {\r\n callback(null, error);\r\n } catch (e) {\r\n this._logger.log(LogLevel.Error, `Stream 'error' callback called with '${error}' threw error: ${getErrorString(e)}`);\r\n }\r\n });\r\n }\r\n\r\n private _cleanupPingTimer(): void {\r\n if (this._pingServerHandle) {\r\n clearTimeout(this._pingServerHandle);\r\n this._pingServerHandle = undefined;\r\n }\r\n }\r\n\r\n private _cleanupTimeout(): void {\r\n if (this._timeoutHandle) {\r\n clearTimeout(this._timeoutHandle);\r\n }\r\n }\r\n\r\n private _createInvocation(methodName: string, args: any[], nonblocking: boolean, streamIds: string[]): InvocationMessage {\r\n if (nonblocking) {\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n } else {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n }\r\n }\r\n\r\n private _launchStreams(streams: IStreamResult[], promiseQueue: Promise): void {\r\n if (streams.length === 0) {\r\n return;\r\n }\r\n\r\n // Synchronize stream data so they arrive in-order on the server\r\n if (!promiseQueue) {\r\n promiseQueue = Promise.resolve();\r\n }\r\n\r\n // We want to iterate over the keys, since the keys are the stream ids\r\n // eslint-disable-next-line guard-for-in\r\n for (const streamId in streams) {\r\n streams[streamId].subscribe({\r\n complete: () => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId)));\r\n },\r\n error: (err) => {\r\n let message: string;\r\n if (err instanceof Error) {\r\n message = err.message;\r\n } else if (err && err.toString) {\r\n message = err.toString();\r\n } else {\r\n message = \"Unknown error\";\r\n }\r\n\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createCompletionMessage(streamId, message)));\r\n },\r\n next: (item) => {\r\n promiseQueue = promiseQueue.then(() => this._sendWithProtocol(this._createStreamItemMessage(streamId, item)));\r\n },\r\n });\r\n }\r\n }\r\n\r\n private _replaceStreamingParams(args: any[]): [IStreamResult[], string[]] {\r\n const streams: IStreamResult[] = [];\r\n const streamIds: string[] = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const argument = args[i];\r\n if (this._isObservable(argument)) {\r\n const streamId = this._invocationId;\r\n this._invocationId++;\r\n // Store the stream for later use\r\n streams[streamId] = argument;\r\n streamIds.push(streamId.toString());\r\n\r\n // remove stream from args\r\n args.splice(i, 1);\r\n }\r\n }\r\n\r\n return [streams, streamIds];\r\n }\r\n\r\n private _isObservable(arg: any): arg is IStreamResult {\r\n // This allows other stream implementations to just work (like rxjs)\r\n return arg && arg.subscribe && typeof arg.subscribe === \"function\";\r\n }\r\n\r\n private _createStreamInvocation(methodName: string, args: any[], streamIds: string[]): StreamInvocationMessage {\r\n const invocationId = this._invocationId;\r\n this._invocationId++;\r\n\r\n if (streamIds.length !== 0) {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n streamIds,\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n } else {\r\n return {\r\n arguments: args,\r\n invocationId: invocationId.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n }\r\n }\r\n\r\n private _createCancelInvocation(id: string): CancelInvocationMessage {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n }\r\n\r\n private _createStreamItemMessage(id: string, item: any): StreamItemMessage {\r\n return {\r\n invocationId: id,\r\n item,\r\n type: MessageType.StreamItem,\r\n };\r\n }\r\n\r\n private _createCompletionMessage(id: string, error?: any, result?: any): CompletionMessage {\r\n if (error) {\r\n return {\r\n error,\r\n invocationId: id,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n\r\n return {\r\n invocationId: id,\r\n result,\r\n type: MessageType.Completion,\r\n };\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { CompletionMessage, HubMessage, IHubProtocol, InvocationMessage, MessageType, StreamItemMessage } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\n\r\nconst JSON_HUB_PROTOCOL_NAME: string = \"json\";\r\n\r\n/** Implements the JSON Hub Protocol. */\r\nexport class JsonHubProtocol implements IHubProtocol {\r\n\r\n /** @inheritDoc */\r\n public readonly name: string = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n public readonly version: number = 1;\r\n\r\n /** @inheritDoc */\r\n public readonly transferFormat: TransferFormat = TransferFormat.Text;\r\n\r\n /** Creates an array of {@link @microsoft/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n public parseMessages(input: string, logger: ILogger): HubMessage[] {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n\r\n if (!input) {\r\n return [];\r\n }\r\n\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n\r\n // Parse the messages\r\n const messages = TextMessageFormat.parse(input);\r\n\r\n const hubMessages = [];\r\n for (const message of messages) {\r\n const parsedMessage = JSON.parse(message) as HubMessage;\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this._isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this._isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this._isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n\r\n return hubMessages;\r\n }\r\n\r\n /** Writes the specified {@link @microsoft/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n public writeMessage(message: HubMessage): string {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n }\r\n\r\n private _isInvocationMessage(message: InvocationMessage): void {\r\n this._assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n\r\n if (message.invocationId !== undefined) {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n }\r\n\r\n private _isStreamItemMessage(message: StreamItemMessage): void {\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n }\r\n\r\n private _isCompletionMessage(message: CompletionMessage): void {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n\r\n if (!message.result && message.error) {\r\n this._assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n this._assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n }\r\n\r\n private _assertNotEmptyString(value: any, errorMessage: string): void {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n}\r\n","// Licensed to the .NET Foundation under one or more agreements.\r\n// The .NET Foundation licenses this file to you under the MIT license.\r\n\r\nimport { DefaultReconnectPolicy } from \"./DefaultReconnectPolicy\";\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { IHttpConnectionOptions } from \"./IHttpConnectionOptions\";\r\nimport { IHubProtocol } from \"./IHubProtocol\";\r\nimport { ILogger, LogLevel } from \"./ILogger\";\r\nimport { IRetryPolicy } from \"./IRetryPolicy\";\r\nimport { HttpTransportType } from \"./ITransport\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n\r\nconst LogLevelNameMapping: {[k: string]: LogLevel} = {\r\n trace: LogLevel.Trace,\r\n debug: LogLevel.Debug,\r\n info: LogLevel.Information,\r\n information: LogLevel.Information,\r\n warn: LogLevel.Warning,\r\n warning: LogLevel.Warning,\r\n error: LogLevel.Error,\r\n critical: LogLevel.Critical,\r\n none: LogLevel.None,\r\n};\r\n\r\nfunction parseLogLevel(name: string): LogLevel {\r\n // Case-insensitive matching via lower-casing\r\n // Yes, I know case-folding is a complicated problem in Unicode, but we only support\r\n // the ASCII strings defined in LogLevelNameMapping anyway, so it's fine -anurse.\r\n const mapping = LogLevelNameMapping[name.toLowerCase()];\r\n if (typeof mapping !== \"undefined\") {\r\n return mapping;\r\n } else {\r\n throw new Error(`Unknown log level: ${name}`);\r\n }\r\n}\r\n\r\n/** A builder for configuring {@link @microsoft/signalr.HubConnection} instances. */\r\nexport class HubConnectionBuilder {\r\n /** @internal */\r\n public protocol?: IHubProtocol;\r\n /** @internal */\r\n public httpConnectionOptions?: IHttpConnectionOptions;\r\n /** @internal */\r\n public url?: string;\r\n /** @internal */\r\n public logger?: ILogger;\r\n\r\n /** If defined, this indicates the client should automatically attempt to reconnect if the connection is lost. */\r\n /** @internal */\r\n public reconnectPolicy?: IRetryPolicy;\r\n\r\n /** Configures console logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel} logLevel The minimum level of messages to log. Anything at this level, or a more severe level, will be logged.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logLevel: LogLevel): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {ILogger} logger An object implementing the {@link @microsoft/signalr.ILogger} interface, which will be used to write all log messages.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logger: ILogger): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {string} logLevel A string representing a LogLevel setting a minimum level of messages to log.\r\n * See {@link https://docs.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n */\r\n public configureLogging(logLevel: string): HubConnectionBuilder;\r\n\r\n /** Configures custom logging for the {@link @microsoft/signalr.HubConnection}.\r\n *\r\n * @param {LogLevel | string | ILogger} logging A {@link @microsoft/signalr.LogLevel}, a string representing a LogLevel, or an object implementing the {@link @microsoft/signalr.ILogger} interface.\r\n * See {@link https://docs.microsoft.com/aspnet/core/signalr/configuration#configure-logging|the documentation for client logging configuration} for more details.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder;\r\n public configureLogging(logging: LogLevel | string | ILogger): HubConnectionBuilder {\r\n Arg.isRequired(logging, \"logging\");\r\n\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n } else if (typeof logging === \"string\") {\r\n const logLevel = parseLogLevel(logging);\r\n this.logger = new ConsoleLogger(logLevel);\r\n } else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * The transport will be selected automatically based on what the server and client support.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified HTTP-based transport to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {HttpTransportType} transportType The specific transport to use.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, transportType: HttpTransportType): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use HTTP-based transports to connect to the specified URL.\r\n *\r\n * @param {string} url The URL the connection will use.\r\n * @param {IHttpConnectionOptions} options An options object used to configure the connection.\r\n * @returns The {@link @microsoft/signalr.HubConnectionBuilder} instance, for chaining.\r\n */\r\n public withUrl(url: string, options: IHttpConnectionOptions): HubConnectionBuilder;\r\n public withUrl(url: string, transportTypeOrOptions?: IHttpConnectionOptions | HttpTransportType): HubConnectionBuilder {\r\n Arg.isRequired(url, \"url\");\r\n Arg.isNotEmpty(url, \"url\");\r\n\r\n this.url = url;\r\n\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = { ...this.httpConnectionOptions, ...transportTypeOrOptions };\r\n } else {\r\n this.httpConnectionOptions = {\r\n ...this.httpConnectionOptions,\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @microsoft/signalr.IHubProtocol} implementation to use.\r\n */\r\n public withHubProtocol(protocol: IHubProtocol): HubConnectionBuilder {\r\n Arg.isRequired(protocol, \"protocol\");\r\n\r\n this.protocol = protocol;\r\n return this;\r\n }\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n * By default, the client will wait 0, 2, 10 and 30 seconds respectively before trying up to 4 reconnect attempts.\r\n */\r\n public withAutomaticReconnect(): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {number[]} retryDelays An array containing the delays in milliseconds before trying each reconnect attempt.\r\n * The length of the array represents how many failed reconnect attempts it takes before the client will stop attempting to reconnect.\r\n */\r\n public withAutomaticReconnect(retryDelays: number[]): HubConnectionBuilder;\r\n\r\n /** Configures the {@link @microsoft/signalr.HubConnection} to automatically attempt to reconnect if the connection is lost.\r\n *\r\n * @param {IRetryPolicy} reconnectPolicy An {@link @microsoft/signalR.IRetryPolicy} that controls the timing and number of reconnect attempts.\r\n */\r\n public withAutomaticReconnect(reconnectPolicy: IRetryPolicy): HubConnectionBuilder;\r\n public withAutomaticReconnect(retryDelaysOrReconnectPolicy?: number[] | IRetryPolicy): HubConnectionBuilder {\r\n if (this.reconnectPolicy) {\r\n throw new Error(\"A reconnectPolicy has already been set.\");\r\n }\r\n\r\n if (!retryDelaysOrReconnectPolicy) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy();\r\n } else if (Array.isArray(retryDelaysOrReconnectPolicy)) {\r\n this.reconnectPolicy = new DefaultReconnectPolicy(retryDelaysOrReconnectPolicy);\r\n } else {\r\n this.reconnectPolicy = retryDelaysOrReconnectPolicy;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /** Creates a {@link @microsoft/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @microsoft/signalr.HubConnection}.\r\n */\r\n public build(): HubConnection {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n const httpConnectionOptions = this.httpConnectionOptions || {};\r\n\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n const connection = new HttpConnection(this.url, httpConnectionOptions);\r\n\r\n return HubConnection.create(\r\n connection,\r\n this.logger || NullLogger.instance,\r\n this.protocol || new JsonHubProtocol(),\r\n this.reconnectPolicy);\r\n }\r\n}\r\n\r\nfunction isLogger(logger: any): logger is ILogger {\r\n return logger.log !== undefined;\r\n}\r\n","import * as React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport * as signalR from '@microsoft/signalr';\r\n\r\nexport interface SignalRHubProps {\r\n url: string;\r\n onConnected?: () => void;\r\n}\r\n\r\nexport abstract class SignalRHub extends React.Component{\r\n static propTypes = {\r\n url: PropTypes.string.isRequired,\r\n onCommected: PropTypes.func\r\n }\r\n\r\n private resolveConnected!: (connection: signalR.HubConnection) => void;\r\n private safeCallConnection: (func: (c: signalR.HubConnection) => T | PromiseLike) => Promise\r\n\r\n constructor(props: Props) {\r\n super(props);\r\n let connected = new Promise(resolve => this.resolveConnected = resolve);\r\n this.safeCallConnection = (func: (c: signalR.HubConnection) => T | PromiseLike) => connected.then(connection => func(connection));\r\n }\r\n\r\n componentDidMount() {\r\n let connection = new signalR.HubConnectionBuilder()\r\n .withUrl(this.props.url)\r\n .build();\r\n\r\n this.willConnect(connection);\r\n let started = connection.start();\r\n started.then(() => {\r\n this.didConnect();\r\n this.props.onConnected && this.props.onConnected();\r\n this.resolveConnected(connection);\r\n })\r\n }\r\n\r\n disconnectListeners: (() => void)[] = [];\r\n\r\n componentWillUnmount() {\r\n this.close();\r\n }\r\n\r\n render(): React.ReactNode {\r\n return null;\r\n }\r\n\r\n public addDisconnectListener(listener: () => void) {\r\n this.disconnectListeners.push(listener);\r\n }\r\n\r\n public removeDisconnectListener(listener: () => void) {\r\n this.disconnectListeners = this.disconnectListeners.filter(l => l !== listener);\r\n\r\n }\r\n public close() {\r\n this.disconnectListeners.forEach(l => l())\r\n this.safeCallConnection(c => c.stop());\r\n }\r\n\r\n protected willConnect(connection: signalR.HubConnection) { }\r\n protected didConnect() { }\r\n\r\n protected invoke(method: string, ...args: any[]): Promise {\r\n return this.safeCallConnection(c => c.invoke(method, ...args));\r\n }\r\n\r\n protected send(methodName: string, ...args: any[]) {\r\n return this.safeCallConnection(c => c.send(methodName, ...args));\r\n }\r\n }","import * as React from 'react';\r\nimport * as signalR from '@microsoft/signalr';\r\nimport { SignalRHubProps, SignalRHub } from './signlarhub';\r\nimport * as flightAwareMessages from '../models/flightawaremessages';\r\n\r\ninterface FlightAwareHubProps extends SignalRHubProps {\r\n children?: (flightAwareHub: FlightAwareHub) => React.ReactNode\r\n}\r\n\r\ninterface FlightAwareMessages {\r\n flightAwareFlightId: string;\r\n messages: flightAwareMessages.FlightMessage[];\r\n}\r\n\r\nexport class FlightAwareHub extends SignalRHub {\r\n\r\n static displayname = \"SignalR.FlightAwareHub\";\r\n\r\n connected = false;\r\n\r\n willConnect(connection: signalR.HubConnection) {\r\n connection.on(\"Messages\", (m: FlightAwareMessages) => (this.listeners[m.flightAwareFlightId] || []).forEach(f => f(m.messages)));\r\n }\r\n\r\n didConnect() {\r\n this.connected = true;\r\n this.addDisconnectListener(this.onDisconnect)\r\n }\r\n\r\n onDisconnect = () => { this.connected = false }\r\n\r\n private listeners: { [flight: string]: ((messages: flightAwareMessages.FlightMessage[]) => void)[] } = {}\r\n\r\n public listen(flightAwareFlightIds: string[], onMessages: (messages: flightAwareMessages.FlightMessage[]) => void) {\r\n for (let flightAwareFlightId of flightAwareFlightIds) {\r\n (this.listeners[flightAwareFlightId] || (this.listeners[flightAwareFlightId] = [])).push(onMessages);\r\n }\r\n this.invoke(\"Listen\", flightAwareFlightIds);\r\n }\r\n\r\n public unlisten(flightAwareFlightIds: string[], onMessages: (messages: flightAwareMessages.FlightMessage[]) => void) {\r\n // Our children will unmount AFTER us, and we don't need to do any special cleanup, so just ignore them.\r\n if (!this.connected) return;\r\n\r\n for (let flightAwareFlightId of flightAwareFlightIds) {\r\n let listeners = this.listeners[flightAwareFlightId];\r\n let index: number;\r\n if (listeners && (index = listeners.indexOf(onMessages)) > -1) {\r\n listeners.splice(index, 1);\r\n if (listeners.length === 0) {\r\n this.send(\"Unlisten\", flightAwareFlightId);\r\n delete this.listeners[flightAwareFlightId];\r\n }\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n return this.props.children ? this.props.children(this) : null;\r\n }\r\n}","import React from 'react';\r\nimport { Route, RouteComponentProps } from \"react-router-dom\";\r\nimport { Footer } from './components/footer';\r\nimport { Map, MapParams } from './pages/map';\r\nimport './App.css';\r\nimport { Api } from './components/googlemaps/api';\r\nimport { Settings } from './models/settings';\r\nimport { FlightAwareHub } from './signalr/flightawarehub';\r\nimport { fetchJson } from './util';\r\n\r\ninterface AppState {\r\n settings?: Settings,\r\n flightAwareHub?: FlightAwareHub | null\r\n}\r\n\r\nclass App extends React.PureComponent<{}, AppState> {\r\n\r\n state: AppState = {};\r\n\r\n componentDidMount() {\r\n fetchJson('/api/settings')\r\n .then(settings => this.setState({ settings }));\r\n }\r\n\r\n renderMap = (props: RouteComponentProps) => this.state.settings && this.state.flightAwareHub && \r\n \r\n render() {\r\n return (\r\n
\r\n {this.state.settings && }\r\n {this.state.settings && this.setState({ flightAwareHub })} url={this.state.settings.flightAwareHubUrl} />} \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport './index.css';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport App from './App';\r\n\r\nvar baseUrl:string = document.getElementsByTagName('base')[0].getAttribute('href')!;\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","key","call","join","module","exports","default","global","ReactIs","require","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","type","KNOWN_STATICS","name","prototype","caller","callee","arity","MEMO_STATICS","compare","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","defineProperty","Object","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","concat","targetStatics","sourceStatics","descriptor","e","nullTag","undefinedTag","freeGlobal","freeSelf","self","root","Function","objectProto","nativeObjectToString","toString","Symbol","symToStringTag","toStringTag","undefined","baseGetTag","value","isOwn","tag","unmasked","result","getRawTag","objectToString","isObject","hookCallback","some","hooks","setHookCallback","callback","input","hasOwnProp","a","b","isObjectEmpty","obj","k","isUndefined","isNumber","isDate","Date","map","arr","fn","res","arrLen","extend","valueOf","createUTC","format","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","m","_pf","isValid","flags","parsedParts","isNowValid","_d","isNaN","getTime","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","t","this","len","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","args","argLen","slice","Error","stack","deprecations","deprecateSimple","isFunction","set","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","source","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","Math","abs","zerosToFill","pow","max","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","replace","makeFormatFunction","array","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","s","ss","mm","h","hh","d","dd","w","ww","M","MM","y","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","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","toLowerCase","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","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","floor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","parseInt","indexOf","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","get","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","n","x","daysInMonth","modMonth","o","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","min","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","add","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","charAt","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","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","data","getLocale","defineLocale","abbr","parentLocale","forEach","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","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","round","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","period","tmp","isAdding","invalid","isString","String","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","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","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","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","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","assign","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","propIsEnumerable","propertyIsEnumerable","test1","test2","fromCharCode","test3","letter","err","shouldUseNative","target","symbols","TypeError","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","object","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","r","encodeURIComponent","f","g","framesToPop","ba","ca","onError","da","ea","fa","ha","ia","ja","la","ma","na","oa","extractEvents","eventTypes","pa","phasedRegistrationNames","qa","registrationName","ra","sa","dependencies","ta","ua","va","wa","currentTarget","ka","xa","ya","za","Aa","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","constructor","release","Ba","injectEventPluginOrder","injectEventPluginsByName","Ca","stateNode","disabled","Da","Ea","random","Fa","Ga","Ha","parentNode","Ia","Ja","Ka","La","return","Ma","dispatchConfig","Na","_targetInst","Oa","Pa","Qa","Ra","window","document","createElement","Sa","Ta","animationend","animationiteration","animationstart","transitionend","Ua","Va","Wa","style","animation","transition","Xa","Ya","Za","$a","ab","bb","cb","db","eb","textContent","fb","gb","nativeEvent","Interface","isDefaultPrevented","defaultPrevented","returnValue","ib","eventPool","pop","jb","destructor","hb","getPooled","preventDefault","stopPropagation","cancelBubble","persist","eventPhase","bubbles","cancelable","timeStamp","isTrusted","kb","lb","mb","nb","ob","documentMode","pb","qb","rb","sb","beforeInput","bubbled","captured","compositionEnd","compositionStart","compositionUpdate","tb","ub","keyCode","vb","detail","wb","zb","which","xb","ctrlKey","altKey","metaKey","char","yb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","color","email","password","range","search","tel","text","url","Mb","nodeName","Nb","srcElement","correspondingUseElement","nodeType","Ob","setAttribute","Pb","Rb","_valueTracker","configurable","enumerable","getValue","setValue","stopTracking","Qb","Sb","checked","Tb","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","current","Ub","z","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","iterator","hc","ic","$$typeof","_status","_result","jc","_debugOwner","_debugSource","fileName","lineNumber","kc","lc","mc","nc","C","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","rc","sc","tc","pc","qc","oc","removeAttribute","setAttributeNS","uc","vc","defaultChecked","defaultValue","_wrapperState","initialChecked","wc","initialValue","controlled","xc","yc","zc","Ac","ownerDocument","activeElement","Bc","change","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","detachEvent","Kc","Lc","attachEvent","Mc","Nc","Oc","Pc","_isInputEventSupported","Qc","view","Rc","Alt","Control","Meta","Shift","Sc","getModifierState","Tc","Uc","Vc","Wc","Xc","Yc","screenX","screenY","clientX","clientY","pageX","pageY","shiftKey","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Zc","pointerId","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","$c","mouseEnter","mouseLeave","pointerEnter","pointerLeave","ad","defaultView","parentWindow","alternate","bd","cd","ed","effectTag","fd","hd","child","sibling","gd","id","animationName","elapsedTime","pseudoElement","jd","clipboardData","kd","ld","charCode","md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","nd","od","repeat","pd","dataTransfer","qd","touches","targetTouches","changedTouches","rd","sd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","td","ud","vd","wd","isInteractive","xd","isInteractiveTopLevelEventType","yd","zd","Ad","targetInst","ancestors","containerInfo","topLevelType","Bd","Cd","Dd","bind","addEventListener","Ed","Fd","Gd","Hd","Id","Jd","body","Kd","firstChild","Ld","nextSibling","Md","contains","compareDocumentPosition","Nd","HTMLIFrameElement","contentWindow","href","Od","contentEditable","Qd","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Rd","Sd","select","Td","Ud","Vd","Wd","Xd","Yd","onSelect","$d","children","Children","Zd","ae","options","selected","defaultSelected","be","dangerouslySetInnerHTML","ce","de","ee","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","fe","html","mathml","svg","ge","he","ie","je","namespaceURI","innerHTML","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ke","lastChild","nodeValue","le","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","me","ne","trim","oe","setProperty","substring","pe","menuitem","area","br","col","embed","hr","img","keygen","link","meta","param","track","wbr","qe","re","is","se","blur","te","ue","ve","we","autoFocus","xe","__html","ye","setTimeout","ze","clearTimeout","Ae","unstable_scheduleCallback","Be","unstable_cancelCallback","De","Ee","Set","Fe","Ge","F","G","He","H","I","Ie","Je","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","J","Ke","Le","Me","Ne","getChildContext","Oe","__reactInternalMemoizedMergedChildContext","Pe","Qe","Re","Se","Ue","ref","pendingProps","contextDependencies","memoizedState","updateQueue","memoizedProps","mode","lastEffect","firstEffect","nextEffect","childExpirationTime","expirationTime","K","Ve","isReactComponent","Xe","Ye","Ze","$e","af","bf","pendingChildren","implementation","cf","didError","earliestPendingTime","latestPendingTime","df","ff","latestPingedTime","earliestSuspendedTime","latestSuspendedTime","gf","nextExpirationTimeToWorkOn","jf","Component","refs","kf","baseState","tf","isMounted","_reactInternalFiber","enqueueSetState","lf","nf","mf","payload","of","pf","qf","enqueueReplaceState","rf","enqueueForceUpdate","sf","uf","shouldComponentUpdate","isPureReactComponent","vf","state","updater","wf","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","xf","context","yf","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","zf","Af","_owner","_stringRef","Bf","Cf","Map","p","A","v","q","B","delete","R","done","Df","Ef","Ff","N","Gf","Hf","If","Jf","tagName","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","O","P","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","lg","mg","queue","baseUpdate","ng","og","pg","lastRenderedReducer","dispatch","action","qg","last","lastRenderedState","eagerReducer","eagerState","rg","create","destroy","deps","sg","tg","ug","vg","wg","readContext","useCallback","useContext","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","ReactCurrentOwner","S","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","Qg","Rg","pendingContext","Sg","timedOutAt","fallback","Tg","Ug","_ctor","then","hf","We","hydrate","hidden","_context","_calculateChangedBits","first","observedBits","unstable_observedBits","Vg","Wg","Xg","Yg","_currentValue","Zg","$g","ah","bh","firstUpdate","lastUpdate","firstCapturedUpdate","lastCapturedUpdate","firstCapturedEffect","lastCapturedEffect","ch","dh","eh","fh","gh","ih","jh","kh","lh","mh","nh","oh","onClick","onclick","ph","WeakSet","qh","error","rh","sh","vh","componentWillUnmount","wh","xh","yh","insertBefore","_reactRootContainer","zh","wasMultiple","multiple","Ce","display","uh","Ah","has","Bh","WeakMap","Ch","Dh","Eh","componentDidCatch","Fh","componentStack","Gh","Hh","Ih","Jh","Kh","T","Lh","U","Mh","Nh","V","Oh","Ph","Qh","Rh","Sh","Th","Uh","__reactInternalSnapshotBeforeUpdate","Vh","Wh","Xh","X","Yh","Zh","pendingCommitExpirationTime","ef","Pd","unstable_runWithPriority","unstable_NormalPriority","finishedWork","$h","ai","size","createElementNS","createTextNode","bi","ci","di","maxDuration","pingCache","ei","fi","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_LowPriority","unstable_IdlePriority","gi","hi","ji","ki","li","Y","mi","ni","oi","Z","pi","qi","ri","si","ti","unstable_now","ui","vi","wi","xi","yi","zi","timeout","timeoutHandle","Ai","Bi","Ci","nextScheduledRoot","Di","Ei","unstable_shouldYield","_onComplete","Fi","firstBatch","_expirationTime","_defer","Gi","Hi","Ii","Ji","Ki","Li","Ni","_root","_callbacks","_next","_hasChildren","_didComplete","_children","Oi","_didCommit","_onCommit","Pi","_internalRoot","Qi","Si","legacy_renderSubtreeIntoContainer","hasAttribute","Ri","Ti","Mi","querySelectorAll","JSON","stringify","form","commit","unmount","createBatch","Vi","createPortal","findDOMNode","unstable_renderSubtreeIntoContainer","unmountComponentAtNode","unstable_createPortal","unstable_batchedUpdates","unstable_interactiveUpdates","flushSync","unstable_createRoot","unstable_flushControlled","Events","findFiberByHostInstance","__REACT_DEVTOOLS_GLOBAL_HOOK__","isDisabled","supportsFiber","inject","onCommitFiberRoot","onCommitFiberUnmount","Te","overrideProps","currentDispatcherRef","findHostInstanceByFiber","bundleType","rendererPackageName","Wi","Xi","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","isarray","pathToRegexp","parse","compile","str","tokensToFunction","tokensToRegExp","PATH_REGEXP","path","defaultDelimiter","delimiter","escaped","capture","group","modifier","asterisk","partial","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","charCodeAt","opts","encode","pretty","segment","attachKeys","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","setState","forceUpdate","__self","__source","keyPrefix","count","escape","only","createRef","PureComponent","createContext","_currentValue2","_threadCount","Provider","Consumer","forwardRef","lazy","memo","cloneElement","createFactory","isValidElement","unstable_ConcurrentMode","unstable_Profiler","previous","priorityLevel","requestAnimationFrame","cancelAnimationFrame","performance","_schedMock","MessageChannel","port2","port1","onmessage","postMessage","unstable_next","unstable_wrapCallback","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","__esModule","definition","globalThis","nmd","paths","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","subClass","superClass","MAX_SIGNED_31_BIT_INT","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","gud","_Component","_this","emitter","handlers","on","handler","off","newValue","changedBits","createEventEmitter","_proto","_ref","nextProps","oldValue","_Component2","_this2","onUpdate","_proto2","isAbsolute","pathname","spliceOne","list","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","hasTrailingSlash","up","part","unshift","_typeof","valueEqual","every","aType","aValue","bValue","aKeys","bKeys","condition","message","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","_extends","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","listener","notifyListeners","_len","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","invariant","globalHistory","canUseHistory","navigator","userAgent","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","nextState","handlePopState","event","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","delta","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","removeEventListener","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","lastIndexOf","pushHashPath","nextPaths","clamp","lowerBound","upperBound","excluded","sourceKeys","createNamedContext","Router","_React$Component","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","cache$1","cacheLimit$1","cacheCount$1","matchPath","_options","_options$exact","_options$strict","_options$sensitive","reduce","_compilePath","cacheKey","pathCache","regexp","compilePath$1","Route","context$$1","computedMatch","_this$props","isEmptyChildren","createURL","staticHandler","methodName","noop","BrowserRouter","Link","handleClick","ex","isModifiedEvent","innerRef","rest","_objectWithoutPropertiesLoose","__RouterContext","Boolean","hostname","globalCssModule","mapToCssModules","className","cssModule","tagPropType","NavbarBrand","Tag","attributes","Footer","src","alt","fetchJson","init","getHeaders","getInit","method","credentials","headers","fetch","response","json","status","statusText","dateMap","momentFormat","jqueryFormat","momentFormatArray","FormatType","formatDate","formatType","valueFormat","moment","DateTime24","DateTime12","DateServer","DateTime24Server","DateTime12Server","defaultDateStringMap","getDateStrings","FlightLegModelDates","flightAwareEstimatedArrivalUTC","flightAwareEstimatedArrivalLocal","scheduledArrivalUTC","scheduledArrivalLocal","flightAwareArrivalUTC","flightAwareArrivalLocal","flightAwareEstimatedDepartureUTC","flightAwareEstimatedDepartureLocal","scheduledDepartureUTC","scheduledDepartureLocal","flightAwareDepartureUTC","flightAwareDepartureLocal","getDates","locationPropTypeShape","latitude","longitude","locationPropType","mapLocation","isLocation","lat","lng","MessageType","UpdateType","messageType","heading","withFlightAwareTracking","WrappedComponent","_class","flightAwareArrivalDateUTC","flightAwareArrivalTimeUTC","flightAwareArrivalDateLocal","flightAwareArrivalTimeLocal","flightAwareEstimatedArrivalDateUTC","flightAwareEstimatedArrivalTimeUTC","flightAwareEstimatedArrivalDateLocal","flightAwareEstimatedArrivalTimeLocal","flightAwareDepartureDateUTC","flightAwareDepartureTimeUTC","flightAwareDepartureDateLocal","flightAwareDepartureTimeLocal","flightAwareEstimatedDepartureDateUTC","flightAwareEstimatedDepartureTimeUTC","flightAwareEstimatedDepartureDateLocal","flightAwareEstimatedDepartureTimeLocal","expired","flight","setStateTimeout","debouncedSetState","arrivalTime","departureTime","estimatedArrivalTime","estimatedDepartureTime","enRouteTime","plan","newFlight","position","departureTimeZoneOffset","arrivalTimeZoneOffset","estimatedArrivalTimeUTC","estimatedArrivalTimeLocal","arrivalTimeStringsUTC","arrivalTimeStringsLocal","estimatedDepartureTimeUTC","estimatedDepartureTimeLocal","departureTimeStringsUTC","departureTimeStringsLocal","arrivalTimeUTC","arrivalTimeLocal","departureTimeUTC","departureTimeLocal","onMessages","messages","flightAwareMessages","Onblock","Offblock","debounceSetState","Flightplan","Arrival","checkExpired","Departure","waypoints","Position","updateType","Estimated","flightAwareHub","flightAwareFlightIds","prevProps","arrivalPlus30","setExpired","fluid","Container","noGutters","Row","stringOrNumberProp","columnProps","xs","sm","xl","widths","getColumnSizeClass","isXs","colWidth","colSize","Col","colClasses","columnProp","isobject","_classNames","colSizeInterfix","colClass","_colClass","FlightInfo","organizationLogo","departure","departureCity","departureState","departureCountry","arrival","arrivalCity","arrivalState","arrivalCountry","scheduledArrivalTimeUTC","scheduledArrivalTimeLocal","scheduledDepartureTimeUTC","scheduledDepartureTimeLocal","tailNumber","aircraftTypeCode","aircraftTypeName","FlightExpired","textAlign","margin","CALLBACK_NAME","Api","super","addScript","Promise","resolve","script","keyParam","apiKey","async","defer","ControlPosition","getControlPosition","google","maps","ZoomControlStyle","Animation","getAnimation","NONE","mapRef","unmounted","clearInstanceListeners","getOptions","addListenerOnce","prevOptions","center","setCenter","trigger","styles","setOptions","divProps","zoomControlOptions","streetViewControlOptions","div","controls","prevPosition","oldIndex","getArray","removeAt","content","ReactDOM","UIControl","backgroundColor","marginTop","marginLeft","borderRadius","boxShadow","cursor","marginBottom","TextControl","fontFamily","fontSize","paddingTop","paddingLeft","paddingRight","BaseMap","closeControl","title","onClose","marginRight","GoogleMap","MapControlPosition","RIGHT_TOP","MapControl","TOP_RIGHT","PolyLine","polyLine","Polyline","setMap","RichMarkerPosition","RichMarker","marker","contentRef","richMarker","OverlayView","markerAnchor","markerWrapper","setValues","getMarker","onAdd","getPanes","floatPane","onRemove","anchor_changed","draw","position_changed","projection","getProjection","latLng","LatLng","fromLatLngToDivPixel","getOffset","offsetHeight","offsetWidth","Size","offsetAnchor","TOP_LEFT","TOP","LEFT","MIDDLE","RIGHT","BOTTOM_LEFT","BOTTOM","BOTTOM_RIGHT","parent","offsetLeft","offsetTop","offsetParent","getOffsetFromParent","Content","portal","getComponent","AircraftMarker","aircraftImage","aircraftType","imgEvents","_","getDetails","transform","FlightLeg","arrivalLocation","departureLocation","bounds","LatLngBounds","fitBounds","setZoom","planColor","planWeight","flightColor","flightWeight","legColor","legWeight","showPlan","aircraftEvents","strokeColor","strokeWeight","geodesic","Marker","addListener","remove","icon","setIcon","setPosition","setZIndex","optimized","scaledSize","trackingMap","renderMap","airportImage","DROP","TrackingMap","flightToken","flightLeg","DEFAULT_RETRY_DELAYS_IN_MILLISECONDS","DefaultReconnectPolicy","retryDelays","_retryDelays","nextRetryDelayInMilliseconds","retryContext","previousRetryCount","HttpError","errorMessage","statusCode","trueProto","TimeoutError","AbortError","UnsupportedTransportError","transport","errorType","DisabledTransportError","FailedToStartTransportError","FailedToNegotiateWithServerError","AggregateErrors","innerErrors","HttpResponse","HttpClient","send","post","getCookieString","LogLevel","NullLogger","log","_logLevel","_message","instance","VERSION","Arg","isNotEmpty","isIn","Platform","isBrowser","isWebWorker","isReactNative","isNode","getDataDetail","includeContent","isArrayBuffer","byteLength","Uint8Array","num","formatArrayBuffer","ArrayBuffer","sendMessage","logger","transportName","httpClient","accessTokenFactory","getUserAgentHeader","Trace","logMessageContent","responseType","withCredentials","SubjectSubscription","subject","observer","_subject","_observer","dispose","observers","splice","cancelCallback","catch","ConsoleLogger","minimumLogLevel","_minLevel","logLevel","Critical","Warning","Information","info","userAgentHeaderName","constructUserAgent","getOsName","getRuntime","getRuntimeVersion","os","runtime","runtimeVersion","majorAndMinor","process","platform","versions","getErrorString","FetchHttpClient","_logger","requireFunc","__non_webpack_require__","_jar","_fetchType","getGlobalThis","AbortController","_abortControllerType","request","abortSignal","aborted","abortController","onabort","abort","timeoutId","msTimeout","cache","redirect","signal","deserializeContent","cookies","getCookies","arrayBuffer","XhrHttpClient","reject","xhr","XMLHttpRequest","open","setRequestHeader","header","onload","responseText","onerror","ontimeout","DefaultHttpClient","_httpClient","HeaderNames","HttpTransportType","TransferFormat","Authorization","Cookie","_isAborted","LongPollingTransport","_accessTokenFactory","_pollAbort","_running","onreceive","onclose","pollAborted","connect","transferFormat","_url","Binary","pollOptions","_getAccessToken","_updateHeaderToken","pollUrl","_closeError","_receiving","_poll","_raiseOnClose","stop","deleteOptions","logMessage","ServerSentEventsTransport","eventSource","opened","Text","EventSource","_close","onopen","_eventSource","close","WebSocketTransport","webSocketConstructor","_logMessageContent","_webSocketConstructor","_headers","webSocket","binaryType","_event","_webSocket","ErrorEvent","readyState","OPEN","_isCloseEvent","wasClean","code","reason","HttpConnection","_stopPromiseResolver","features","_negotiateVersion","baseUrl","_resolveUrl","webSocketModule","eventSourceModule","WebSocket","_connectionState","_connectionStarted","Debug","_startInternalPromise","_startInternal","_stopPromise","_sendQueue","TransportSendQueue","_stopInternal","_stopError","_stopConnection","skipNegotiation","WebSockets","_constructTransport","_startTransport","negotiateResponse","redirects","_getNegotiationResponse","ProtocolVersion","accessToken","_createTransport","inherentKeepAlive","negotiateUrl","_resolveNegotiateUrl","negotiateVersion","connectionToken","connectionId","_createConnectUrl","requestedTransport","requestedTransferFormat","connectUrl","_isITransport","transportExceptions","transports","availableTransports","negotiate","endpoint","transportOrError","_resolveTransportOrError","ServerSentEvents","LongPolling","actualTransport","transportMatches","transferFormats","aTag","_transport","_buffer","_executing","_sendBufferedData","PromiseSource","_transportResult","_sendLoopPromise","_sendLoop","_bufferData","promise","transportResult","_concatBuffers","arrayBuffers","totalLength","buffer","_resolver","_rejecter","TextMessageFormat","write","RecordSeparator","RecordSeparatorCode","HandshakeProtocol","writeHandshakeRequest","handshakeRequest","parseHandshakeResponse","messageData","remainingData","binaryData","separatorIndex","responseLength","textData","Subject","complete","subscribe","HubConnectionState","HubConnection","connection","protocol","reconnectPolicy","_nextKeepAlive","_freezeEventListener","serverTimeoutInMilliseconds","keepAliveIntervalInMilliseconds","_protocol","_reconnectPolicy","_handshakeProtocol","_processIncomingData","_connectionClosed","_methods","_closedCallbacks","_reconnectingCallbacks","_reconnectedCallbacks","_invocationId","_receivedHandshakeResponse","Disconnected","_cachedPingMessage","writeMessage","Ping","Reconnecting","_startPromise","_startWithStateTransitions","Connecting","Connected","_stopDuringStartError","handshakePromise","_handshakeResolver","_handshakeRejecter","_sendMessage","_cleanupTimeout","_resetTimeoutPeriod","_resetKeepAliveInterval","_cleanupPingTimer","startPromise","Disconnecting","_reconnectDelayHandle","_completeClose","stream","streams","streamIds","_replaceStreamingParams","invocationDescriptor","_createStreamInvocation","promiseQueue","cancelInvocation","_createCancelInvocation","invocationId","_sendWithProtocol","invocationEvent","Completion","_launchStreams","_len2","_key2","sendPromise","_createInvocation","invoke","_len3","_key3","newMethod","removeIdx","onreconnecting","onreconnected","_processHandshakeResponse","parseMessages","Invocation","_invokeClientMethod","StreamItem","Close","allowReconnect","responseMessage","_timeoutHandle","serverTimeout","_pingServerHandle","nextPing","invocationMessage","methods","_cancelCallbacksWithError","_reconnect","reconnectStartTime","previousReconnectAttempts","retryError","nextRetryDelay","_getNextRetryDelay","elapsedMilliseconds","retryReason","callbacks","nonblocking","streamId","_createCompletionMessage","_createStreamItemMessage","argument","_isObservable","StreamInvocation","CancelInvocation","JsonHubProtocol","hubMessages","parsedMessage","_isInvocationMessage","_isStreamItemMessage","_isCompletionMessage","_assertNotEmptyString","LogLevelNameMapping","trace","debug","information","warning","critical","none","None","HubConnectionBuilder","configureLogging","logging","mapping","parseLogLevel","withUrl","transportTypeOrOptions","httpConnectionOptions","withHubProtocol","withAutomaticReconnect","retryDelaysOrReconnectPolicy","build","SignalRHub","resolveConnected","safeCallConnection","disconnectListeners","connected","signalR","willConnect","didConnect","onConnected","addDisconnectListener","removeDisconnectListener","FlightAwareHub","onDisconnect","flightAwareFlightId","displayname","App","settings","mapsApiKey","flightAwareHubUrl","getElementsByTagName","getAttribute","rootElement","getElementById","serviceWorker","ready","registration","unregister"],"sourceRoot":""}