{"version":3,"sources":["webpack:///./node_modules/@firebase/util/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/gatsby-link/index.js","webpack:///./node_modules/@firebase/component/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/component/dist/index.esm.js","webpack:///./node_modules/gatsby-react-router-scroll/session-storage.js","webpack:///./.cache/normalize-page-path.js","webpack:///./.cache/find-path.js","webpack:///./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/mitt/dist/mitt.es.js","webpack:///./.cache/emitter.js","webpack:///./node_modules/gatsby-react-router-scroll/index.js","webpack:///./.cache/react-lifecycles-compat.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/@reach/router/es/lib/history.js","webpack:///./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack:///./node_modules/@firebase/installations/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/installations/dist/index.esm.js","webpack:///./node_modules/@firebase/messaging/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/messaging/dist/index.esm.js","webpack:///./.cache/page-renderer.js","webpack:///./node_modules/@reach/router/es/lib/utils.js","webpack:///./.cache/api-runner-browser-plugins.js","webpack:///./node_modules/@mikaelkristiansson/domready/ready.js","webpack:///./.cache/register-service-worker.js","webpack:///./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/gatsby-plugin-firebase-messaging/gatsby-browser.js","webpack:///./.cache/route-announcer-props.js","webpack:///./.cache/navigation.js","webpack:///./node_modules/shallow-compare/es/index.js","webpack:///./.cache/ensure-resources.js","webpack:///./.cache/production-app.js","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack:///./node_modules/@reach/router/es/index.js","webpack:///./.cache/strip-prefix.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/gatsby-link/parse-path.js","webpack:///./node_modules/gatsby-plugin-offline/gatsby-browser.js","webpack:///./.cache/prefetch.js","webpack:///./.cache/loader.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-container.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack:///./.cache/public-page-renderer.js","webpack:///./node_modules/idb/build/idb.js","webpack:///./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack:///./.cache/create-react-context.js","webpack:///./node_modules/@firebase/util/dist/index.esm.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/gatsby/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./.cache/api-runner-browser.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/@firebase/app/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@firebase/logger/dist/index.esm.js","webpack:///./node_modules/@firebase/app/dist/index.esm.js"],"names":["_extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","_interopRequireDefault","exports","__esModule","withPrefix","withAssetPrefix","path","getGlobalPathPrefix","navigateTo","replace","push","navigate","default","_objectWithoutPropertiesLoose2","_assertThisInitialized2","_inheritsLoose2","_extends2","_propTypes","_react","_router","_utils","_parsePath","parsePath","isAbsolutePath","startsWith","prefix","_ref","_prefix","getGlobalBasePrefix","isLocalLink","base","endsWith","slice","rewriteLinkPath","relativeTo","current","resolve","absolutify","NavLinkPropTypes","activeClassName","string","activeStyle","object","partiallyActive","bool","GatsbyLinkLocationWrapper","props","createElement","Location","_ref2","location","GatsbyLink","_location","_React$Component","_this","defaultGetProps","_ref3","isPartiallyCurrent","isCurrent","className","filter","Boolean","join","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","_prefetch","currentPath","pathname","rewrittenPath","to","newPathName","___loader","enqueue","componentDidUpdate","prevProps","prevState","componentDidMount","componentWillUnmount","io","_this$io","instance","el","unobserve","disconnect","ref","cb","_this2","innerRef","entries","forEach","entry","target","isIntersecting","intersectionRatio","observe","render","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","prefixedTo","Link","e","hovering","button","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","preventDefault","shouldReplace","encodeURI","___navigate","href","Component","propTypes","func","isRequired","showDeprecationWarning","functionName","altFunctionName","version","console","warn","_default","forwardRef","options","___push","___replace","_assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","reject","fulfilled","value","step","next","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","Symbol","iterator","v","op","pop","__values","o","m","__read","r","ar","error","__spreadArray","from","il","j","name","instanceFactory","type","multipleInstances","serviceProps","instantiationMode","setInstantiationMode","mode","setMultipleInstances","setServiceProps","Provider","container","component","instances","Map","instancesDeferred","get","identifier","normalizedIdentifier","normalizeInstanceIdentifier","has","deferred","set","getOrInitializeService","promise","getImmediate","_a","optional","Error","getComponent","setComponent","e_1","isComponentEager","_b","_c","_d","instanceIdentifier","instanceDeferred","e_1_1","return","clearInstance","delete","services","values","all","service","map","INTERNAL","_delete","isComponentSet","isInitialized","undefined","normalizeIdentifierForFactory","ComponentContainer","providers","addComponent","provider","getProvider","addOrOverwriteComponent","getProviders","SessionStorage","read","key","stateKey","getStateKey","sessionStorage","getItem","JSON","parse","save","storedValue","stringify","setItem","stateKeyBase","charAt","pathCache","matchPaths","trimPathname","rawPathname","decodeURIComponent","stripPrefix","__BASE_PATH__","split","URL","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","matchPath","originalPath","pick","normalizePagePath","route","grabMatchParams","params","findPath","foundPath","useScrollRestoration","useLocation","useContext","_scrollHandler","ScrollContext","useRef","useLayoutEffect","position","scrollTo","onScroll","scrollTop","module","obj","emitter","on","handler","off","splice","indexOf","emit","evt","mitt","ScrollContainer","ScrollHandler","_scrollContainer","_useScrollRestoration","polyfill","_inheritsLoose","subClass","superClass","_extends","source","getLocation","_source$location","search","hash","origin","protocol","host","hostname","port","canUseDOM","decodeURI","history","createHistory","listeners","transitioning","resolveTransition","_onTransitionComplete","listen","listener","popstateListener","action","addEventListener","removeEventListener","fn","_ref$replace","go","Date","now","replaceState","pushState","transition","res","createMemorySource","initialPath","searchIndex","initialLocation","substr","index","stack","states","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","document","globalHistory","localizedManifests","isArray","localizedManifest","find","app","start_url","lang","_interopRequireWildcard","React","_sessionStorage","createContext","displayName","_len","args","_key","concat","_stateStorage","scrollListener","scrollY","windowScroll","shouldUpdateScroll","scrollToHash","node","getElementById","substring","scrollIntoView","prevRouterProps","routerProps","scrollPosition","_this$props$location","_this$props$location2","children","element","ERROR_DESCRIPTION_MAP","ERROR_FACTORY","isServerError","code","includes","getInstallationsEndpoint","INSTALLATIONS_API_URL","projectId","extractAuthTokenInfoFromResponse","response","token","requestStatus","expiresIn","responseExpiresIn","Number","creationTime","getErrorFromResponse","requestName","responseJson","errorData","json","serverCode","serverMessage","message","serverStatus","status","getHeaders","apiKey","Headers","Accept","getHeadersWithAuth","appConfig","refreshToken","headers","append","INTERNAL_AUTH_VERSION","getAuthorizationHeader","retryIfServerError","createInstallationRequest","fid","endpoint","request","responseValue","authVersion","appId","sdkVersion","method","fetch","ok","registrationStatus","authToken","sleep","ms","setTimeout","VALID_FID_PATTERN","generateFid","fidByteArray","Uint8Array","self","crypto","msCrypto","getRandomValues","array","btoa","fromCharCode","encode","test","getKey","appName","fidChangeCallbacks","fidChanged","callFidChangeCallbacks","channel","getBroadcastChannel","postMessage","closeBroadcastChannel","broadcastFidChange","callbacks","callbacks_1","callbacks_1_1","callback","broadcastChannel","BroadcastChannel","onmessage","data","size","close","OBJECT_STORE_NAME","dbPromise","getDbPromise","upgradeDB","oldVersion","createObjectStore","db","tx","objectStore","oldValue","transaction","put","complete","remove","update","updateFn","store","newValue","getInstallationEntry","registrationPromise","installationEntry","oldEntry","clearTimedOutRequest","updateOrCreateInstallationEntry","entryWithPromise","navigator","onLine","registrationPromiseWithError","inProgressEntry","registrationTime","registeredInstallationEntry","customData","registerInstallation","waitUntilFidRegistration","triggerRegistrationIfNecessary","updateInstallationRequest","generateAuthTokenRequest","platformLoggerProvider","platformLogger","getGenerateAuthTokenEndpoint","getPlatformInfoString","installation","refreshAuthToken","dependencies","forceRefresh","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenExpired","isAuthTokenValid","updateAuthTokenRequest","waitUntilAuthTokenRequest","inProgressAuthToken","requestTime","makeAuthTokenRequestInProgressEntry","updatedInstallationEntry","fetchAuthTokenFromServer","completeInstallationRegistration","deleteInstallationRequest","getDeleteEndpoint","_onIdChange","callbackSet","Set","add","addCallback","removeCallback","getMissingValueError","valueName","registerComponent","configKeys_1","configKeys_1_1","keyName","extractAppConfig","getId","catch","_getId","getToken","_getToken","deleteInstallation","onIdChange","registerVersion","MessageType","ERROR_MAP","DEFAULT_VAPID_KEY","arrayToBase64","uint8Array","base64ToArray","base64String","base64","repeat","rawData","atob","outputArray","charCodeAt","migrateOldDatabase","senderId","databases","tokenDetails","indexedDB","oldDetails","objectStoreNames","contains","clear","auth","p256dh","fcmToken","createTime","subscriptionOptions","swScope","vapidKey","checkTokenDetails","upgradeDb","dbGet","firebaseDependencies","oldTokenDetails","dbSet","dbRemove","requestGetToken","subscribeOptions","responseData","err_1","getBody","getEndpoint","errorInfo","requestUpdateToken","updateOptions","err_2","requestDeleteToken","unsubscribeOptions","err_3","ENDPOINT","installations","web","applicationPubKey","swRegistration","pushSubscription","Notification","permission","getPushSubscription","scope","getNewToken","dbOptions","isVapidKeyEqual","currentOptions","isEndpointEqual","isAuthEqual","isP256dhEqual","updateToken","deleteToken","pushManager","getSubscription","unsubscribe","updatedToken","updatedTokenDetails","e_2","subscription","subscribe","userVisibleOnly","applicationServerKey","isConsoleMessage","SwController","isOnBackgroundMessageUsed","bgMessageHandler","waitUntil","onPush","onSubChange","onNotificationClick","defineProperty","enumerable","configurable","setBackgroundMessageHandler","onBackgroundMessage","nextOrObserver","registration","requestPermission","usePublicVapidKey","useServiceWorker","onMessage","onTokenRefresh","event","internalPayload","clientList","isNotificationShown","payload","err","getMessagePayloadInternal","getClientList","debug","TAG","some","client","visibilityState","url","hasVisibleClients","sendMessagePayloadInternalToWindows","notification","showNotification","wrapInternalPayload","collapseKey","collapse_key","messagePayloadInternal","title","image","propagateNotificationPayload","propagateDataPayload","fcmOptions","link","analyticsLabel","analytics_label","propagateFcmOptions","externalizePayload","newSubscription","originUrl","stopImmediatePropagation","click_action","getLink","getWindowClient","clients","openWindow","focus","messageType","NOTIFICATION_CLICKED","isFirebaseMessaging","wrappedInternalPayload","clientList_1","clientList_1_1","clientUrl","PUSH_RECEIVED","clientList_2","clientList_2_1","e_2_1","matchAll","includeUncontrolled","notificationPayloadInternal","actions","maxActions","WindowController","onMessageCallback","serviceWorker","messageEventListener","dataPayload","stripInternalFields","logEvent","getVapidKey","getSwReg","updateVapidKey","updateSwReg","serviceWorkerRegistration","registerDefaultSw","ServiceWorkerRegistration","register","browserErrorMessage","permissionResult","eventType","getEventType","analyticsProvider","message_id","message_name","message_time","message_device_time","Math","floor","NAMESPACE_EXPORTS","isSupported","PushSubscription","cookieEnabled","messagingSenderId","PageRenderer","pageResources","pageContext","__params","pathContext","pageElement","apiRunner","loader","publicLoader","page","routes","match","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","l","missed","routeSegments","max","routeSegment","uriSegment","isSplat","dynamicMatch","paramRe","exec","reservedNames","_to$split","toPathname","toQuery","basePathname","toSegments","baseSegments","addQuery","allSegments","segments","segment","insertParams","_path$split","pathBase","_path$split$","query","constructedPath","_params$location","_params$location$sear","searchSplit","validateRedirect","isDynamic","sort","rankRoute","score","reduce","isRootSegment","SEGMENT_POINTS","a","q","shallowCompare","obj1","obj2","obj1Keys","keys","every","plugin","require","ie10","appVersion","fns","doc","hack","documentElement","doScroll","loaded","readyState","shift","definition","reg","installingWorker","installing","log","controller","___swUpdated","___failedResources","reload","components","condition","format","c","argIndex","framesToPop","onClientEntry","removeFirebaseServiceWorker","removeSw","sws","firebaseSw","getRegistrations","findIndex","sw","unregister","RouteAnnouncerProps","id","top","width","height","padding","overflow","clip","whiteSpace","border","redirectMap","redirects","redirect","fromPath","maybeRedirect","toPath","onPreRouteUpdate","prevLocation","onRouteUpdate","timeoutId","loadPage","PageResourceStatus","clearTimeout","webpackCompilationHash","___webpackCompilationHash","gatsbyApi","reachNavigate","results","getSavedScrollPosition","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","pageHeadings","querySelectorAll","textContent","newAnnouncement","innerText","RouteUpdates","shouldComponentUpdate","Fragment","shallowDiffers","_i","EnsureResources","loadPageSync","getDerivedStateFromProps","loadResources","rawPath","setState","nextState","ProdLoader","asyncRequires","setLoader","setApiRunner","___emitter","apiRunnerAsync","RouteHandler","baseuri","basepath","DataContext","GatsbyRoot","staticQueryResults","getStaticQueryResults","LocationHandler","Consumer","pagePath","browserLoc","SiteRoot","App","renderer","ReactDOM","hydrate","domReady","prefetchPathname","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","finalData","StaticQuery","useStaticQuery","context","isNaN","graphql","_objectWithoutProperties","_classCallCheck","Constructor","_possibleConstructorReturn","ReferenceError","_inherits","writable","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","ServerLocation","BaseContext","Router","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","Children","toArray","child","createRoute","clone","cloneElement","FocusWrapper","FocusHandler","wrapperProps","PureComponent","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","_this4","_len2","_key2","shouldFocus","myURIChanged","navigatedUpToMe","activeElement","_this5","_props2","_props2$component","Comp","outline","tabIndex","k","C","_ref4","_ref5","_ref6","_props$getProps","anchorProps","encodedHref","shouldNavigate","_location$state","restState","RedirectRequest","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","str","elementPath","_typeof","hashIndex","registerServiceWorker","whiteListLinkRels","prefetchedPathnames","setPathResources","getResourceURLsForPathname","resources","onServiceWorkerActive","active","nodes","headerResources","tagName","getAttribute","src","prefetchedResources","resource","rel","onload","onerror","head","appendChild","onPostPrefetchPathname","supportedPrefetchStrategy","feature","fakeLink","relList","supports","support","setAttribute","getElementsByTagName","getElementsByName","parentNode","req","XMLHttpRequest","open","send","preFetched","prefetch","Success","preferDefault","createPageDataUrl","doFetch","onreadystatechange","toPageResources","pageData","componentChunkName","staticQueryHashes","BaseLoader","loadComponent","inFlightNetworkRequests","pageDb","inFlightDb","staticQueryDb","pageDataDb","prefetchTriggered","prefetchCompleted","memoizedGet","inFlightPromise","prefetchDisabled","fetchPageDataJson","loadObj","retries","responseText","jsonPayload","notFound","loadPageDataJson","loadAppData","allData","finalResult","componentChunkPromise","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResultsMap","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","chunkName","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","_reactDom","scrollKey","ScrollContainerImplementation","findDOMNode","_getRequireWildcardCache","WeakMap","cache","newObj","hasPropertyDescriptor","getOwnPropertyDescriptor","desc","arr","promisifyRequest","onsuccess","promisifyRequestCall","promisifyCursorRequestCall","Cursor","proxyProperties","ProxyClass","targetProp","properties","prop","val","proxyRequestMethods","proxyMethods","proxyCursorRequestMethods","Index","_index","cursor","_cursor","_request","ObjectStore","_store","Transaction","idbTransaction","_tx","oncomplete","onabort","UpgradeDB","_db","DB","IDBIndex","IDBCursor","methodName","createIndex","IDBObjectStore","IDBTransaction","IDBDatabase","funcName","nativeObject","getAll","count","items","iterateCursor","continue","openDb","upgradeCallback","onupgradeneeded","deleteDb","factory","stringToByteArray","out","deepCopy","deepExtend","getTime","Deferred","wrapCallback","isNode","toString","global","process","isBrowser","FirebaseError","_super","captureStackTrace","ErrorFactory","serviceName","errors","fullCode","template","replaceTemplate","fullMessage","PATTERN","Sha1","chain_","buf_","W_","pad_","inbuf_","total_","blockSize","reset","compress_","buf","offset","W","bytes","lengthMinusBlock","inbuf","digest","totalBits","createSubscribe","executor","onNoObservers","proxy","ObserverProxy","observers","unsubscribes","observerCount","task","finalized","forEachObserver","observer","methods","methods_1","implementsAnyMethods","noop","unsub","unsubscribeOne","finalError","sendOne","ProdPageRenderer","InternalPageRenderer","_arrayLikeToArray","len","arr2","_toConsumableArray","iter","minLen","excluded","sourceKeys","plugins","api","defaultReturn","argTransform","previous","Function","jl","LogLevel","levelStringToEnum","DEBUG","VERBOSE","INFO","WARN","ERROR","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","logLevel","toISOString","Logger","_logLevel","_logHandler","_userLogHandler","setLogLevel","level","inst","_a$1","ERRORS","PLATFORM_LOG_STRING","logger","FirebaseAppImpl","config","firebase_","isDeleted_","name_","automaticDataCollectionEnabled_","automaticDataCollectionEnabled","options_","_addComponent","checkDestroyed_","removeApp","_getService","_removeServiceInstance","_addOrOverwriteComponent","toJSON","createFirebaseNamespaceCore","firebaseAppImpl","apps","namespace","initializeApp","rawConfig","libraryKeyOrName","variant","library","libraryMismatch","versionMismatch","warning","onLog","logCallback","_loop_1","customLogLevel","userLogHandler","arg","ignored","toLowerCase","instances_1","setUserLogHandler","SDK_VERSION","useAsService","componentName","serviceNamespace","appArg","serviceFxn","createFirebaseNamespace","extendNamespace","PlatformLoggerService","isVersionServiceProvider","logString","firebase","firebase$1"],"mappings":"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","file":"app-869b0d50a3e223b9e902.js","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\nexport function __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigateTo = exports.replace = exports.push = exports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _router = require(\"@reach/router\");\n\nvar _utils = require(\"@reach/router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + ((base === null || base === void 0 ? void 0 : base.endsWith(\"/\")) ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_router.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"]);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n\n var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar showDeprecationWarning = function showDeprecationWarning(functionName, altFunctionName, version) {\n return console.warn(\"The \\\"\" + functionName + \"\\\" method is now deprecated and will be removed in Gatsby v\" + version + \". Please use \\\"\" + altFunctionName + \"\\\" instead.\");\n};\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;\n\nvar push = function push(to) {\n showDeprecationWarning(\"push\", \"navigate\", 3);\n\n window.___push(rewriteLinkPath(to, window.location.pathname));\n};\n\nexports.push = push;\n\nvar replace = function replace(to) {\n showDeprecationWarning(\"replace\", \"navigate\", 3);\n\n window.___replace(rewriteLinkPath(to, window.location.pathname));\n}; // TODO: Remove navigateTo for Gatsby v3\n\n\nexports.replace = replace;\n\nvar navigateTo = function navigateTo(to) {\n showDeprecationWarning(\"navigateTo\", \"navigate\", 3);\n return push(to);\n};\n\nexports.navigateTo = navigateTo;","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\nexport function __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n}","import { __assign, __values, __read, __awaiter, __generator, __spreadArray } from 'tslib';\nimport { Deferred } from '@firebase/util';\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\n\nvar Component =\n/** @class */\nfunction () {\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\n function Component(name, instanceFactory, type) {\n this.name = name;\n this.instanceFactory = instanceFactory;\n this.type = type;\n this.multipleInstances = false;\n /**\r\n * Properties to be added to the service namespace\r\n */\n\n this.serviceProps = {};\n this.instantiationMode = \"LAZY\"\n /* LAZY */\n ;\n }\n\n Component.prototype.setInstantiationMode = function (mode) {\n this.instantiationMode = mode;\n return this;\n };\n\n Component.prototype.setMultipleInstances = function (multipleInstances) {\n this.multipleInstances = multipleInstances;\n return this;\n };\n\n Component.prototype.setServiceProps = function (props) {\n this.serviceProps = props;\n return this;\n };\n\n return Component;\n}();\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\n\nvar Provider =\n/** @class */\nfunction () {\n function Provider(name, container) {\n this.name = name;\n this.container = container;\n this.component = null;\n this.instances = new Map();\n this.instancesDeferred = new Map();\n }\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\n\n\n Provider.prototype.get = function (identifier) {\n if (identifier === void 0) {\n identifier = DEFAULT_ENTRY_NAME;\n } // if multipleInstances is not supported, use the default name\n\n\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\n var deferred = new Deferred();\n this.instancesDeferred.set(normalizedIdentifier, deferred); // If the service instance is available, resolve the promise with it immediately\n\n try {\n var instance = this.getOrInitializeService(normalizedIdentifier);\n\n if (instance) {\n deferred.resolve(instance);\n }\n } catch (e) {// when the instance factory throws an exception during get(), it should not cause\n // a fatal error. We just return the unresolved promise in this case.\n }\n }\n\n return this.instancesDeferred.get(normalizedIdentifier).promise;\n };\n\n Provider.prototype.getImmediate = function (options) {\n var _a = __assign({\n identifier: DEFAULT_ENTRY_NAME,\n optional: false\n }, options),\n identifier = _a.identifier,\n optional = _a.optional; // if multipleInstances is not supported, use the default name\n\n\n var normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n\n try {\n var instance = this.getOrInitializeService(normalizedIdentifier);\n\n if (!instance) {\n if (optional) {\n return null;\n }\n\n throw Error(\"Service \" + this.name + \" is not available\");\n }\n\n return instance;\n } catch (e) {\n if (optional) {\n return null;\n } else {\n throw e;\n }\n }\n };\n\n Provider.prototype.getComponent = function () {\n return this.component;\n };\n\n Provider.prototype.setComponent = function (component) {\n var e_1, _a;\n\n if (component.name !== this.name) {\n throw Error(\"Mismatching Component \" + component.name + \" for Provider \" + this.name + \".\");\n }\n\n if (this.component) {\n throw Error(\"Component for \" + this.name + \" has already been provided\");\n }\n\n this.component = component; // if the service is eager, initialize the default instance\n\n if (isComponentEager(component)) {\n try {\n this.getOrInitializeService(DEFAULT_ENTRY_NAME);\n } catch (e) {// when the instance factory for an eager Component throws an exception during the eager\n // initialization, it should not cause a fatal error.\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\n // a fatal error in this case?\n }\n }\n\n try {\n // Create service instances for the pending promises and resolve them\n // NOTE: if this.multipleInstances is false, only the default instance will be created\n // and all promises with resolve with it regardless of the identifier.\n for (var _b = __values(this.instancesDeferred.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {\n var _d = __read(_c.value, 2),\n instanceIdentifier = _d[0],\n instanceDeferred = _d[1];\n\n var normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\n\n try {\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\n var instance = this.getOrInitializeService(normalizedIdentifier);\n instanceDeferred.resolve(instance);\n } catch (e) {// when the instance factory throws an exception, it should not cause\n // a fatal error. We just leave the promise unresolved.\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n };\n\n Provider.prototype.clearInstance = function (identifier) {\n if (identifier === void 0) {\n identifier = DEFAULT_ENTRY_NAME;\n }\n\n this.instancesDeferred.delete(identifier);\n this.instances.delete(identifier);\n }; // app.delete() will call this method on every provider to delete the services\n // TODO: should we mark the provider as deleted?\n\n\n Provider.prototype.delete = function () {\n return __awaiter(this, void 0, void 0, function () {\n var services;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n services = Array.from(this.instances.values());\n return [4\n /*yield*/\n , Promise.all(__spreadArray(__spreadArray([], __read(services.filter(function (service) {\n return 'INTERNAL' in service;\n }) // legacy services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(function (service) {\n return service.INTERNAL.delete();\n }))), __read(services.filter(function (service) {\n return '_delete' in service;\n }) // modularized services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(function (service) {\n return service._delete();\n }))))];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n Provider.prototype.isComponentSet = function () {\n return this.component != null;\n };\n\n Provider.prototype.isInitialized = function (identifier) {\n if (identifier === void 0) {\n identifier = DEFAULT_ENTRY_NAME;\n }\n\n return this.instances.has(identifier);\n };\n\n Provider.prototype.getOrInitializeService = function (identifier) {\n var instance = this.instances.get(identifier);\n\n if (!instance && this.component) {\n instance = this.component.instanceFactory(this.container, normalizeIdentifierForFactory(identifier));\n this.instances.set(identifier, instance);\n }\n\n return instance || null;\n };\n\n Provider.prototype.normalizeInstanceIdentifier = function (identifier) {\n if (this.component) {\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\n } else {\n return identifier; // assume multiple instances are supported before the component is provided.\n }\n };\n\n return Provider;\n}(); // undefined should be passed to the service factory for the default instance\n\n\nfunction normalizeIdentifierForFactory(identifier) {\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\n}\n\nfunction isComponentEager(component) {\n return component.instantiationMode === \"EAGER\"\n /* EAGER */\n ;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\n\n\nvar ComponentContainer =\n/** @class */\nfunction () {\n function ComponentContainer(name) {\n this.name = name;\n this.providers = new Map();\n }\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\n\n\n ComponentContainer.prototype.addComponent = function (component) {\n var provider = this.getProvider(component.name);\n\n if (provider.isComponentSet()) {\n throw new Error(\"Component \" + component.name + \" has already been registered with \" + this.name);\n }\n\n provider.setComponent(component);\n };\n\n ComponentContainer.prototype.addOrOverwriteComponent = function (component) {\n var provider = this.getProvider(component.name);\n\n if (provider.isComponentSet()) {\n // delete the existing provider from the container, so we can register the new component\n this.providers.delete(component.name);\n }\n\n this.addComponent(component);\n };\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\n\n\n ComponentContainer.prototype.getProvider = function (name) {\n if (this.providers.has(name)) {\n return this.providers.get(name);\n } // create a Provider for a service that hasn't registered with Firebase\n\n\n var provider = new Provider(name, this);\n this.providers.set(name, provider);\n return provider;\n };\n\n ComponentContainer.prototype.getProviders = function () {\n return Array.from(this.providers.values());\n };\n\n return ComponentContainer;\n}();\n\nexport { Component, ComponentContainer, Provider };","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\n}\n","import { pick } from \"@reach/router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n const pathname = decodeURIComponent(rawPathname)\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(pathname, __BASE_PATH__)\n // Remove any hashfragment\n .split(`#`)[0]\n // Remove search query\n .split(`?`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _router = require(\"@reach/router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _router.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)();\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, []);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContainer = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _scrollContainer = require(\"./scroll-container\");\n\nexports.ScrollContainer = _scrollContainer.ScrollContainer;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","exports.polyfill = Component => Component\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n\n\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\n\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n\n return {\n get location() {\n return location;\n },\n\n get transitioning() {\n return transitioning;\n },\n\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({ location: location, action: \"POP\" });\n };\n\n source.addEventListener(\"popstate\", popstateListener);\n\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, { key: Date.now() + \"\" });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({ location: location, action: \"PUSH\" });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n\n index++;\n stack.push({ pathname: pathname, search: search.length ? \"?\" + search : search });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n\n stack[index] = { pathname: pathname, search: search };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\n\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexport { globalHistory, navigate, createHistory, createMemorySource };","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\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._stateStorage = new _sessionStorage.SessionStorage();\n\n _this.scrollListener = function () {\n var key = _this.props.location.key;\n\n if (key) {\n _this._stateStorage.save(_this.props.location, key, window.scrollY);\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (hash && scrollPosition === 0) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\nexport function __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n}","import firebase from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { __awaiter, __generator, __spreadArray, __read, __values, __assign } from 'tslib';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDb } from 'idb';\nvar name = \"@firebase/installations\";\nvar version = \"0.4.21\";\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar PENDING_TIMEOUT_MS = 10000;\nvar PACKAGE_VERSION = \"w:\" + version;\nvar INTERNAL_AUTH_VERSION = 'FIS_v2';\nvar INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\nvar TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\n\nvar SERVICE = 'installations';\nvar SERVICE_NAME = 'Installations';\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar _a;\n\nvar ERROR_DESCRIPTION_MAP = (_a = {}, _a[\"missing-app-config-values\"\n/* MISSING_APP_CONFIG_VALUES */\n] = 'Missing App configuration value: \"{$valueName}\"', _a[\"not-registered\"\n/* NOT_REGISTERED */\n] = 'Firebase Installation is not registered.', _a[\"installation-not-found\"\n/* INSTALLATION_NOT_FOUND */\n] = 'Firebase Installation not found.', _a[\"request-failed\"\n/* REQUEST_FAILED */\n] = '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"', _a[\"app-offline\"\n/* APP_OFFLINE */\n] = 'Could not process request. Application offline.', _a[\"delete-pending-registration\"\n/* DELETE_PENDING_REGISTRATION */\n] = \"Can't delete installation while there is a pending registration request.\", _a);\nvar ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\n\nfunction isServerError(error) {\n return error instanceof FirebaseError && error.code.includes(\"request-failed\"\n /* REQUEST_FAILED */\n );\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction getInstallationsEndpoint(_a) {\n var projectId = _a.projectId;\n return INSTALLATIONS_API_URL + \"/projects/\" + projectId + \"/installations\";\n}\n\nfunction extractAuthTokenInfoFromResponse(response) {\n return {\n token: response.token,\n requestStatus: 2\n /* COMPLETED */\n ,\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\n creationTime: Date.now()\n };\n}\n\nfunction getErrorFromResponse(requestName, response) {\n return __awaiter(this, void 0, void 0, function () {\n var responseJson, errorData;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , response.json()];\n\n case 1:\n responseJson = _a.sent();\n errorData = responseJson.error;\n return [2\n /*return*/\n , ERROR_FACTORY.create(\"request-failed\"\n /* REQUEST_FAILED */\n , {\n requestName: requestName,\n serverCode: errorData.code,\n serverMessage: errorData.message,\n serverStatus: errorData.status\n })];\n }\n });\n });\n}\n\nfunction getHeaders(_a) {\n var apiKey = _a.apiKey;\n return new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': apiKey\n });\n}\n\nfunction getHeadersWithAuth(appConfig, _a) {\n var refreshToken = _a.refreshToken;\n var headers = getHeaders(appConfig);\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\n return headers;\n}\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\n\n\nfunction retryIfServerError(fn) {\n return __awaiter(this, void 0, void 0, function () {\n var result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , fn()];\n\n case 1:\n result = _a.sent();\n\n if (result.status >= 500 && result.status < 600) {\n // Internal Server Error. Retry request.\n return [2\n /*return*/\n , fn()];\n }\n\n return [2\n /*return*/\n , result];\n }\n });\n });\n}\n\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\n // This works because the server will never respond with fractions of a second.\n return Number(responseExpiresIn.replace('s', '000'));\n}\n\nfunction getAuthorizationHeader(refreshToken) {\n return INTERNAL_AUTH_VERSION + \" \" + refreshToken;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction createInstallationRequest(appConfig, _a) {\n var fid = _a.fid;\n return __awaiter(this, void 0, void 0, function () {\n var endpoint, headers, body, request, response, responseValue, registeredInstallationEntry;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpoint = getInstallationsEndpoint(appConfig);\n headers = getHeaders(appConfig);\n body = {\n fid: fid,\n authVersion: INTERNAL_AUTH_VERSION,\n appId: appConfig.appId,\n sdkVersion: PACKAGE_VERSION\n };\n request = {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(body)\n };\n return [4\n /*yield*/\n , retryIfServerError(function () {\n return fetch(endpoint, request);\n })];\n\n case 1:\n response = _b.sent();\n if (!response.ok) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , response.json()];\n\n case 2:\n responseValue = _b.sent();\n registeredInstallationEntry = {\n fid: responseValue.fid || fid,\n registrationStatus: 2\n /* COMPLETED */\n ,\n refreshToken: responseValue.refreshToken,\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\n };\n return [2\n /*return*/\n , registeredInstallationEntry];\n\n case 3:\n return [4\n /*yield*/\n , getErrorFromResponse('Create Installation', response)];\n\n case 4:\n throw _b.sent();\n }\n });\n });\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/** Returns a promise that resolves after given time passes. */\n\n\nfunction sleep(ms) {\n return new Promise(function (resolve) {\n setTimeout(resolve, ms);\n });\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction bufferToBase64UrlSafe(array) {\n var b64 = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(array))));\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\nvar INVALID_FID = '';\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\n\nfunction generateFid() {\n try {\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\n // bytes. our implementation generates a 17 byte array instead.\n var fidByteArray = new Uint8Array(17);\n var crypto_1 = self.crypto || self.msCrypto;\n crypto_1.getRandomValues(fidByteArray); // Replace the first 4 random bits with the constant FID header of 0b0111.\n\n fidByteArray[0] = 112 + fidByteArray[0] % 16;\n var fid = encode(fidByteArray);\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\n } catch (_a) {\n // FID generation errored\n return INVALID_FID;\n }\n}\n/** Converts a FID Uint8Array to a base64 string representation. */\n\n\nfunction encode(fidByteArray) {\n var b64String = bufferToBase64UrlSafe(fidByteArray); // Remove the 23rd character that was added because of the extra 4 bits at the\n // end of our 17 byte array, and the '=' padding.\n\n return b64String.substr(0, 22);\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/** Returns a string key that can be used to identify the app. */\n\n\nfunction getKey(appConfig) {\n return appConfig.appName + \"!\" + appConfig.appId;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar fidChangeCallbacks = new Map();\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\n\nfunction fidChanged(appConfig, fid) {\n var key = getKey(appConfig);\n callFidChangeCallbacks(key, fid);\n broadcastFidChange(key, fid);\n}\n\nfunction addCallback(appConfig, callback) {\n // Open the broadcast channel if it's not already open,\n // to be able to listen to change events from other tabs.\n getBroadcastChannel();\n var key = getKey(appConfig);\n var callbackSet = fidChangeCallbacks.get(key);\n\n if (!callbackSet) {\n callbackSet = new Set();\n fidChangeCallbacks.set(key, callbackSet);\n }\n\n callbackSet.add(callback);\n}\n\nfunction removeCallback(appConfig, callback) {\n var key = getKey(appConfig);\n var callbackSet = fidChangeCallbacks.get(key);\n\n if (!callbackSet) {\n return;\n }\n\n callbackSet.delete(callback);\n\n if (callbackSet.size === 0) {\n fidChangeCallbacks.delete(key);\n } // Close broadcast channel if there are no more callbacks.\n\n\n closeBroadcastChannel();\n}\n\nfunction callFidChangeCallbacks(key, fid) {\n var e_1, _a;\n\n var callbacks = fidChangeCallbacks.get(key);\n\n if (!callbacks) {\n return;\n }\n\n try {\n for (var callbacks_1 = __values(callbacks), callbacks_1_1 = callbacks_1.next(); !callbacks_1_1.done; callbacks_1_1 = callbacks_1.next()) {\n var callback = callbacks_1_1.value;\n callback(fid);\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (callbacks_1_1 && !callbacks_1_1.done && (_a = callbacks_1.return)) _a.call(callbacks_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n}\n\nfunction broadcastFidChange(key, fid) {\n var channel = getBroadcastChannel();\n\n if (channel) {\n channel.postMessage({\n key: key,\n fid: fid\n });\n }\n\n closeBroadcastChannel();\n}\n\nvar broadcastChannel = null;\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\n\nfunction getBroadcastChannel() {\n if (!broadcastChannel && 'BroadcastChannel' in self) {\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\n\n broadcastChannel.onmessage = function (e) {\n callFidChangeCallbacks(e.data.key, e.data.fid);\n };\n }\n\n return broadcastChannel;\n}\n\nfunction closeBroadcastChannel() {\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\n broadcastChannel.close();\n broadcastChannel = null;\n }\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar DATABASE_NAME = 'firebase-installations-database';\nvar DATABASE_VERSION = 1;\nvar OBJECT_STORE_NAME = 'firebase-installations-store';\nvar dbPromise = null;\n\nfunction getDbPromise() {\n if (!dbPromise) {\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDB) {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (upgradeDB.oldVersion) {\n case 0:\n upgradeDB.createObjectStore(OBJECT_STORE_NAME);\n }\n });\n }\n\n return dbPromise;\n}\n/** Assigns or overwrites the record for the given key with the given value. */\n\n\nfunction set(appConfig, value) {\n return __awaiter(this, void 0, void 0, function () {\n var key, db, tx, objectStore, oldValue;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n key = getKey(appConfig);\n return [4\n /*yield*/\n , getDbPromise()];\n\n case 1:\n db = _a.sent();\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n objectStore = tx.objectStore(OBJECT_STORE_NAME);\n return [4\n /*yield*/\n , objectStore.get(key)];\n\n case 2:\n oldValue = _a.sent();\n return [4\n /*yield*/\n , objectStore.put(value, key)];\n\n case 3:\n _a.sent();\n\n return [4\n /*yield*/\n , tx.complete];\n\n case 4:\n _a.sent();\n\n if (!oldValue || oldValue.fid !== value.fid) {\n fidChanged(appConfig, value.fid);\n }\n\n return [2\n /*return*/\n , value];\n }\n });\n });\n}\n/** Removes record(s) from the objectStore that match the given key. */\n\n\nfunction remove(appConfig) {\n return __awaiter(this, void 0, void 0, function () {\n var key, db, tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n key = getKey(appConfig);\n return [4\n /*yield*/\n , getDbPromise()];\n\n case 1:\n db = _a.sent();\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n return [4\n /*yield*/\n , tx.objectStore(OBJECT_STORE_NAME).delete(key)];\n\n case 2:\n _a.sent();\n\n return [4\n /*yield*/\n , tx.complete];\n\n case 3:\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\n\n\nfunction update(appConfig, updateFn) {\n return __awaiter(this, void 0, void 0, function () {\n var key, db, tx, store, oldValue, newValue;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n key = getKey(appConfig);\n return [4\n /*yield*/\n , getDbPromise()];\n\n case 1:\n db = _a.sent();\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n store = tx.objectStore(OBJECT_STORE_NAME);\n return [4\n /*yield*/\n , store.get(key)];\n\n case 2:\n oldValue = _a.sent();\n newValue = updateFn(oldValue);\n if (!(newValue === undefined)) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , store.delete(key)];\n\n case 3:\n _a.sent();\n\n return [3\n /*break*/\n , 6];\n\n case 4:\n return [4\n /*yield*/\n , store.put(newValue, key)];\n\n case 5:\n _a.sent();\n\n _a.label = 6;\n\n case 6:\n return [4\n /*yield*/\n , tx.complete];\n\n case 7:\n _a.sent();\n\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\n fidChanged(appConfig, newValue.fid);\n }\n\n return [2\n /*return*/\n , newValue];\n }\n });\n });\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\n\n\nfunction getInstallationEntry(appConfig) {\n return __awaiter(this, void 0, void 0, function () {\n var registrationPromise, installationEntry;\n\n var _a;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , update(appConfig, function (oldEntry) {\n var installationEntry = updateOrCreateInstallationEntry(oldEntry);\n var entryWithPromise = triggerRegistrationIfNecessary(appConfig, installationEntry);\n registrationPromise = entryWithPromise.registrationPromise;\n return entryWithPromise.installationEntry;\n })];\n\n case 1:\n installationEntry = _b.sent();\n if (!(installationEntry.fid === INVALID_FID)) return [3\n /*break*/\n , 3];\n _a = {};\n return [4\n /*yield*/\n , registrationPromise];\n\n case 2:\n // FID generation failed. Waiting for the FID from the server.\n return [2\n /*return*/\n , (_a.installationEntry = _b.sent(), _a)];\n\n case 3:\n return [2\n /*return*/\n , {\n installationEntry: installationEntry,\n registrationPromise: registrationPromise\n }];\n }\n });\n });\n}\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\n\n\nfunction updateOrCreateInstallationEntry(oldEntry) {\n var entry = oldEntry || {\n fid: generateFid(),\n registrationStatus: 0\n /* NOT_STARTED */\n\n };\n return clearTimedOutRequest(entry);\n}\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\n\n\nfunction triggerRegistrationIfNecessary(appConfig, installationEntry) {\n if (installationEntry.registrationStatus === 0\n /* NOT_STARTED */\n ) {\n if (!navigator.onLine) {\n // Registration required but app is offline.\n var registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\"\n /* APP_OFFLINE */\n ));\n return {\n installationEntry: installationEntry,\n registrationPromise: registrationPromiseWithError\n };\n } // Try registering. Change status to IN_PROGRESS.\n\n\n var inProgressEntry = {\n fid: installationEntry.fid,\n registrationStatus: 1\n /* IN_PROGRESS */\n ,\n registrationTime: Date.now()\n };\n var registrationPromise = registerInstallation(appConfig, inProgressEntry);\n return {\n installationEntry: inProgressEntry,\n registrationPromise: registrationPromise\n };\n } else if (installationEntry.registrationStatus === 1\n /* IN_PROGRESS */\n ) {\n return {\n installationEntry: installationEntry,\n registrationPromise: waitUntilFidRegistration(appConfig)\n };\n } else {\n return {\n installationEntry: installationEntry\n };\n }\n}\n/** This will be executed only once for each new Firebase Installation. */\n\n\nfunction registerInstallation(appConfig, installationEntry) {\n return __awaiter(this, void 0, void 0, function () {\n var registeredInstallationEntry, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2,, 7]);\n\n return [4\n /*yield*/\n , createInstallationRequest(appConfig, installationEntry)];\n\n case 1:\n registeredInstallationEntry = _a.sent();\n return [2\n /*return*/\n , set(appConfig, registeredInstallationEntry)];\n\n case 2:\n e_1 = _a.sent();\n if (!(isServerError(e_1) && e_1.customData.serverCode === 409)) return [3\n /*break*/\n , 4]; // Server returned a \"FID can not be used\" error.\n // Generate a new ID next time.\n\n return [4\n /*yield*/\n , remove(appConfig)];\n\n case 3:\n // Server returned a \"FID can not be used\" error.\n // Generate a new ID next time.\n _a.sent();\n\n return [3\n /*break*/\n , 6];\n\n case 4:\n // Registration failed. Set FID as not registered.\n return [4\n /*yield*/\n , set(appConfig, {\n fid: installationEntry.fid,\n registrationStatus: 0\n /* NOT_STARTED */\n\n })];\n\n case 5:\n // Registration failed. Set FID as not registered.\n _a.sent();\n\n _a.label = 6;\n\n case 6:\n throw e_1;\n\n case 7:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n/** Call if FID registration is pending in another request. */\n\n\nfunction waitUntilFidRegistration(appConfig) {\n return __awaiter(this, void 0, void 0, function () {\n var entry, _a, installationEntry, registrationPromise;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , updateInstallationRequest(appConfig)];\n\n case 1:\n entry = _b.sent();\n _b.label = 2;\n\n case 2:\n if (!(entry.registrationStatus === 1\n /* IN_PROGRESS */\n )) return [3\n /*break*/\n , 5]; // createInstallation request still in progress.\n\n return [4\n /*yield*/\n , sleep(100)];\n\n case 3:\n // createInstallation request still in progress.\n _b.sent();\n\n return [4\n /*yield*/\n , updateInstallationRequest(appConfig)];\n\n case 4:\n entry = _b.sent();\n return [3\n /*break*/\n , 2];\n\n case 5:\n if (!(entry.registrationStatus === 0\n /* NOT_STARTED */\n )) return [3\n /*break*/\n , 7];\n return [4\n /*yield*/\n , getInstallationEntry(appConfig)];\n\n case 6:\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\n\n if (registrationPromise) {\n return [2\n /*return*/\n , registrationPromise];\n } else {\n // if there is no registrationPromise, entry is registered.\n return [2\n /*return*/\n , installationEntry];\n }\n\n case 7:\n return [2\n /*return*/\n , entry];\n }\n });\n });\n}\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\n\n\nfunction updateInstallationRequest(appConfig) {\n return update(appConfig, function (oldEntry) {\n if (!oldEntry) {\n throw ERROR_FACTORY.create(\"installation-not-found\"\n /* INSTALLATION_NOT_FOUND */\n );\n }\n\n return clearTimedOutRequest(oldEntry);\n });\n}\n\nfunction clearTimedOutRequest(entry) {\n if (hasInstallationRequestTimedOut(entry)) {\n return {\n fid: entry.fid,\n registrationStatus: 0\n /* NOT_STARTED */\n\n };\n }\n\n return entry;\n}\n\nfunction hasInstallationRequestTimedOut(installationEntry) {\n return installationEntry.registrationStatus === 1\n /* IN_PROGRESS */\n && installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now();\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction generateAuthTokenRequest(_a, installationEntry) {\n var appConfig = _a.appConfig,\n platformLoggerProvider = _a.platformLoggerProvider;\n return __awaiter(this, void 0, void 0, function () {\n var endpoint, headers, platformLogger, body, request, response, responseValue, completedAuthToken;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\n headers = getHeadersWithAuth(appConfig, installationEntry);\n platformLogger = platformLoggerProvider.getImmediate({\n optional: true\n });\n\n if (platformLogger) {\n headers.append('x-firebase-client', platformLogger.getPlatformInfoString());\n }\n\n body = {\n installation: {\n sdkVersion: PACKAGE_VERSION\n }\n };\n request = {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(body)\n };\n return [4\n /*yield*/\n , retryIfServerError(function () {\n return fetch(endpoint, request);\n })];\n\n case 1:\n response = _b.sent();\n if (!response.ok) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , response.json()];\n\n case 2:\n responseValue = _b.sent();\n completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\n return [2\n /*return*/\n , completedAuthToken];\n\n case 3:\n return [4\n /*yield*/\n , getErrorFromResponse('Generate Auth Token', response)];\n\n case 4:\n throw _b.sent();\n }\n });\n });\n}\n\nfunction getGenerateAuthTokenEndpoint(appConfig, _a) {\n var fid = _a.fid;\n return getInstallationsEndpoint(appConfig) + \"/\" + fid + \"/authTokens:generate\";\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\n\n\nfunction refreshAuthToken(dependencies, forceRefresh) {\n if (forceRefresh === void 0) {\n forceRefresh = false;\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var tokenPromise, entry, authToken, _a;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , update(dependencies.appConfig, function (oldEntry) {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(\"not-registered\"\n /* NOT_REGISTERED */\n );\n }\n\n var oldAuthToken = oldEntry.authToken;\n\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\n // There is a valid token in the DB.\n return oldEntry;\n } else if (oldAuthToken.requestStatus === 1\n /* IN_PROGRESS */\n ) {\n // There already is a token request in progress.\n tokenPromise = waitUntilAuthTokenRequest(dependencies, forceRefresh);\n return oldEntry;\n } else {\n // No token or token expired.\n if (!navigator.onLine) {\n throw ERROR_FACTORY.create(\"app-offline\"\n /* APP_OFFLINE */\n );\n }\n\n var inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\n tokenPromise = fetchAuthTokenFromServer(dependencies, inProgressEntry);\n return inProgressEntry;\n }\n })];\n\n case 1:\n entry = _b.sent();\n if (!tokenPromise) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , tokenPromise];\n\n case 2:\n _a = _b.sent();\n return [3\n /*break*/\n , 4];\n\n case 3:\n _a = entry.authToken;\n _b.label = 4;\n\n case 4:\n authToken = _a;\n return [2\n /*return*/\n , authToken];\n }\n });\n });\n}\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\n\n\nfunction waitUntilAuthTokenRequest(dependencies, forceRefresh) {\n return __awaiter(this, void 0, void 0, function () {\n var entry, authToken;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , updateAuthTokenRequest(dependencies.appConfig)];\n\n case 1:\n entry = _a.sent();\n _a.label = 2;\n\n case 2:\n if (!(entry.authToken.requestStatus === 1\n /* IN_PROGRESS */\n )) return [3\n /*break*/\n , 5]; // generateAuthToken still in progress.\n\n return [4\n /*yield*/\n , sleep(100)];\n\n case 3:\n // generateAuthToken still in progress.\n _a.sent();\n\n return [4\n /*yield*/\n , updateAuthTokenRequest(dependencies.appConfig)];\n\n case 4:\n entry = _a.sent();\n return [3\n /*break*/\n , 2];\n\n case 5:\n authToken = entry.authToken;\n\n if (authToken.requestStatus === 0\n /* NOT_STARTED */\n ) {\n // The request timed out or failed in a different call. Try again.\n return [2\n /*return*/\n , refreshAuthToken(dependencies, forceRefresh)];\n } else {\n return [2\n /*return*/\n , authToken];\n }\n\n }\n });\n });\n}\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\n\n\nfunction updateAuthTokenRequest(appConfig) {\n return update(appConfig, function (oldEntry) {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(\"not-registered\"\n /* NOT_REGISTERED */\n );\n }\n\n var oldAuthToken = oldEntry.authToken;\n\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\n return __assign(__assign({}, oldEntry), {\n authToken: {\n requestStatus: 0\n /* NOT_STARTED */\n\n }\n });\n }\n\n return oldEntry;\n });\n}\n\nfunction fetchAuthTokenFromServer(dependencies, installationEntry) {\n return __awaiter(this, void 0, void 0, function () {\n var authToken, updatedInstallationEntry, e_1, updatedInstallationEntry;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3,, 8]);\n\n return [4\n /*yield*/\n , generateAuthTokenRequest(dependencies, installationEntry)];\n\n case 1:\n authToken = _a.sent();\n updatedInstallationEntry = __assign(__assign({}, installationEntry), {\n authToken: authToken\n });\n return [4\n /*yield*/\n , set(dependencies.appConfig, updatedInstallationEntry)];\n\n case 2:\n _a.sent();\n\n return [2\n /*return*/\n , authToken];\n\n case 3:\n e_1 = _a.sent();\n if (!(isServerError(e_1) && (e_1.customData.serverCode === 401 || e_1.customData.serverCode === 404))) return [3\n /*break*/\n , 5]; // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\n // Generate a new ID next time.\n\n return [4\n /*yield*/\n , remove(dependencies.appConfig)];\n\n case 4:\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\n // Generate a new ID next time.\n _a.sent();\n\n return [3\n /*break*/\n , 7];\n\n case 5:\n updatedInstallationEntry = __assign(__assign({}, installationEntry), {\n authToken: {\n requestStatus: 0\n /* NOT_STARTED */\n\n }\n });\n return [4\n /*yield*/\n , set(dependencies.appConfig, updatedInstallationEntry)];\n\n case 6:\n _a.sent();\n\n _a.label = 7;\n\n case 7:\n throw e_1;\n\n case 8:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n\nfunction isEntryRegistered(installationEntry) {\n return installationEntry !== undefined && installationEntry.registrationStatus === 2\n /* COMPLETED */\n ;\n}\n\nfunction isAuthTokenValid(authToken) {\n return authToken.requestStatus === 2\n /* COMPLETED */\n && !isAuthTokenExpired(authToken);\n}\n\nfunction isAuthTokenExpired(authToken) {\n var now = Date.now();\n return now < authToken.creationTime || authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER;\n}\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\n\n\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\n var inProgressAuthToken = {\n requestStatus: 1\n /* IN_PROGRESS */\n ,\n requestTime: Date.now()\n };\n return __assign(__assign({}, oldEntry), {\n authToken: inProgressAuthToken\n });\n}\n\nfunction hasAuthTokenRequestTimedOut(authToken) {\n return authToken.requestStatus === 1\n /* IN_PROGRESS */\n && authToken.requestTime + PENDING_TIMEOUT_MS < Date.now();\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction _getId(dependencies) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, installationEntry, registrationPromise;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , getInstallationEntry(dependencies.appConfig)];\n\n case 1:\n _a = _b.sent(), installationEntry = _a.installationEntry, registrationPromise = _a.registrationPromise;\n\n if (registrationPromise) {\n registrationPromise.catch(console.error);\n } else {\n // If the installation is already registered, update the authentication\n // token if needed.\n refreshAuthToken(dependencies).catch(console.error);\n }\n\n return [2\n /*return*/\n , installationEntry.fid];\n }\n });\n });\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction _getToken(dependencies, forceRefresh) {\n if (forceRefresh === void 0) {\n forceRefresh = false;\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var authToken;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , completeInstallationRegistration(dependencies.appConfig)];\n\n case 1:\n _a.sent();\n\n return [4\n /*yield*/\n , refreshAuthToken(dependencies, forceRefresh)];\n\n case 2:\n authToken = _a.sent();\n return [2\n /*return*/\n , authToken.token];\n }\n });\n });\n}\n\nfunction completeInstallationRegistration(appConfig) {\n return __awaiter(this, void 0, void 0, function () {\n var registrationPromise;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , getInstallationEntry(appConfig)];\n\n case 1:\n registrationPromise = _a.sent().registrationPromise;\n if (!registrationPromise) return [3\n /*break*/\n , 3]; // A createInstallation request is in progress. Wait until it finishes.\n\n return [4\n /*yield*/\n , registrationPromise];\n\n case 2:\n // A createInstallation request is in progress. Wait until it finishes.\n _a.sent();\n\n _a.label = 3;\n\n case 3:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction deleteInstallationRequest(appConfig, installationEntry) {\n return __awaiter(this, void 0, void 0, function () {\n var endpoint, headers, request, response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n endpoint = getDeleteEndpoint(appConfig, installationEntry);\n headers = getHeadersWithAuth(appConfig, installationEntry);\n request = {\n method: 'DELETE',\n headers: headers\n };\n return [4\n /*yield*/\n , retryIfServerError(function () {\n return fetch(endpoint, request);\n })];\n\n case 1:\n response = _a.sent();\n if (!!response.ok) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , getErrorFromResponse('Delete Installation', response)];\n\n case 2:\n throw _a.sent();\n\n case 3:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n\nfunction getDeleteEndpoint(appConfig, _a) {\n var fid = _a.fid;\n return getInstallationsEndpoint(appConfig) + \"/\" + fid;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction deleteInstallation(dependencies) {\n return __awaiter(this, void 0, void 0, function () {\n var appConfig, entry;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n appConfig = dependencies.appConfig;\n return [4\n /*yield*/\n , update(appConfig, function (oldEntry) {\n if (oldEntry && oldEntry.registrationStatus === 0\n /* NOT_STARTED */\n ) {\n // Delete the unregistered entry without sending a deleteInstallation request.\n return undefined;\n }\n\n return oldEntry;\n })];\n\n case 1:\n entry = _a.sent();\n if (!entry) return [3\n /*break*/\n , 6];\n if (!(entry.registrationStatus === 1\n /* IN_PROGRESS */\n )) return [3\n /*break*/\n , 2]; // Can't delete while trying to register.\n\n throw ERROR_FACTORY.create(\"delete-pending-registration\"\n /* DELETE_PENDING_REGISTRATION */\n );\n\n case 2:\n if (!(entry.registrationStatus === 2\n /* COMPLETED */\n )) return [3\n /*break*/\n , 6];\n if (!!navigator.onLine) return [3\n /*break*/\n , 3];\n throw ERROR_FACTORY.create(\"app-offline\"\n /* APP_OFFLINE */\n );\n\n case 3:\n return [4\n /*yield*/\n , deleteInstallationRequest(appConfig, entry)];\n\n case 4:\n _a.sent();\n\n return [4\n /*yield*/\n , remove(appConfig)];\n\n case 5:\n _a.sent();\n\n _a.label = 6;\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n */\n\n\nfunction _onIdChange(_a, callback) {\n var appConfig = _a.appConfig;\n addCallback(appConfig, callback);\n return function () {\n removeCallback(appConfig, callback);\n };\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction extractAppConfig(app) {\n var e_1, _a;\n\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration');\n }\n\n if (!app.name) {\n throw getMissingValueError('App Name');\n } // Required app config keys\n\n\n var configKeys = ['projectId', 'apiKey', 'appId'];\n\n try {\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\n var keyName = configKeys_1_1.value;\n\n if (!app.options[keyName]) {\n throw getMissingValueError(keyName);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return {\n appName: app.name,\n projectId: app.options.projectId,\n apiKey: app.options.apiKey,\n appId: app.options.appId\n };\n}\n\nfunction getMissingValueError(valueName) {\n return ERROR_FACTORY.create(\"missing-app-config-values\"\n /* MISSING_APP_CONFIG_VALUES */\n , {\n valueName: valueName\n });\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction registerInstallations(instance) {\n var installationsName = 'installations';\n instance.INTERNAL.registerComponent(new Component(installationsName, function (container) {\n var app = container.getProvider('app').getImmediate(); // Throws if app isn't configured properly.\n\n var appConfig = extractAppConfig(app);\n var platformLoggerProvider = container.getProvider('platform-logger');\n var dependencies = {\n appConfig: appConfig,\n platformLoggerProvider: platformLoggerProvider\n };\n var installations = {\n app: app,\n getId: function getId() {\n return _getId(dependencies);\n },\n getToken: function getToken(forceRefresh) {\n return _getToken(dependencies, forceRefresh);\n },\n delete: function _delete() {\n return deleteInstallation(dependencies);\n },\n onIdChange: function onIdChange(callback) {\n return _onIdChange(dependencies, callback);\n }\n };\n return installations;\n }, \"PUBLIC\"\n /* PUBLIC */\n ));\n instance.registerVersion(name, version);\n}\n\nregisterInstallations(firebase);\nexport { registerInstallations };","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\nexport function __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n}","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory } from '@firebase/util';\nimport { __spreadArray, __read, __awaiter, __generator, __assign, __values } from 'tslib';\nimport { deleteDb, openDb } from 'idb';\nimport firebase from '@firebase/app';\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar _a;\n\nvar ERROR_MAP = (_a = {}, _a[\"missing-app-config-values\"\n/* MISSING_APP_CONFIG_VALUES */\n] = 'Missing App configuration value: \"{$valueName}\"', _a[\"only-available-in-window\"\n/* AVAILABLE_IN_WINDOW */\n] = 'This method is available in a Window context.', _a[\"only-available-in-sw\"\n/* AVAILABLE_IN_SW */\n] = 'This method is available in a service worker context.', _a[\"permission-default\"\n/* PERMISSION_DEFAULT */\n] = 'The notification permission was not granted and dismissed instead.', _a[\"permission-blocked\"\n/* PERMISSION_BLOCKED */\n] = 'The notification permission was not granted and blocked instead.', _a[\"unsupported-browser\"\n/* UNSUPPORTED_BROWSER */\n] = \"This browser doesn't support the API's required to use the firebase SDK.\", _a[\"failed-service-worker-registration\"\n/* FAILED_DEFAULT_REGISTRATION */\n] = 'We are unable to register the default service worker. {$browserErrorMessage}', _a[\"token-subscribe-failed\"\n/* TOKEN_SUBSCRIBE_FAILED */\n] = 'A problem occurred while subscribing the user to FCM: {$errorInfo}', _a[\"token-subscribe-no-token\"\n/* TOKEN_SUBSCRIBE_NO_TOKEN */\n] = 'FCM returned no token when subscribing the user to push.', _a[\"token-unsubscribe-failed\"\n/* TOKEN_UNSUBSCRIBE_FAILED */\n] = 'A problem occurred while unsubscribing the ' + 'user from FCM: {$errorInfo}', _a[\"token-update-failed\"\n/* TOKEN_UPDATE_FAILED */\n] = 'A problem occurred while updating the user from FCM: {$errorInfo}', _a[\"token-update-no-token\"\n/* TOKEN_UPDATE_NO_TOKEN */\n] = 'FCM returned no token when updating the user to push.', _a[\"use-sw-after-get-token\"\n/* USE_SW_AFTER_GET_TOKEN */\n] = 'The useServiceWorker() method may only be called once and must be ' + 'called before calling getToken() to ensure your service worker is used.', _a[\"invalid-sw-registration\"\n/* INVALID_SW_REGISTRATION */\n] = 'The input to useServiceWorker() must be a ServiceWorkerRegistration.', _a[\"invalid-bg-handler\"\n/* INVALID_BG_HANDLER */\n] = 'The input to setBackgroundMessageHandler() must be a function.', _a[\"invalid-vapid-key\"\n/* INVALID_VAPID_KEY */\n] = 'The public VAPID key must be a string.', _a[\"use-vapid-key-after-get-token\"\n/* USE_VAPID_KEY_AFTER_GET_TOKEN */\n] = 'The usePublicVapidKey() method may only be called once and must be ' + 'called before calling getToken() to ensure your VAPID key is used.', _a);\nvar ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\nvar DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\nvar DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\nvar ENDPOINT = 'https://fcmregistrations.googleapis.com/v1'; // Key of FCM Payload in Notification's data field.\n\nvar FCM_MSG = 'FCM_MSG';\nvar TAG = 'FirebaseMessaging: '; // Set to '1' if Analytics is enabled for the campaign\n\nvar CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\nvar CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\nvar CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\nvar CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l'; // Due to the fact that onBackgroundMessage can't be awaited (to support rxjs), a silent push\n// warning might be shown by the browser if the callback fails to completes by the end of onPush.\n// Experiments were ran to determine the majority onBackground message clock time. This brief\n// blocking time would allow majority of the onBackgroundMessage callback to finish.\n\nvar BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS = 1000; // Preparation time for client to initialize and set up the message handler.\n\nvar FOREGROUND_HANDLE_PREPARATION_TIME_MS = 3000;\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\n\nvar MessageType;\n\n(function (MessageType) {\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\n})(MessageType || (MessageType = {}));\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction arrayToBase64(array) {\n var uint8Array = new Uint8Array(array);\n var base64String = btoa(String.fromCharCode.apply(String, __spreadArray([], __read(uint8Array))));\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n\nfunction base64ToArray(base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding).replace(/\\-/g, '+').replace(/_/g, '/');\n var rawData = atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n\n return outputArray;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar OLD_DB_NAME = 'fcm_token_details_db';\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\n\nvar OLD_DB_VERSION = 5;\nvar OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\n\nfunction migrateOldDatabase(senderId) {\n return __awaiter(this, void 0, void 0, function () {\n var databases, dbNames, tokenDetails, db;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!('databases' in indexedDB)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , indexedDB.databases()];\n\n case 1:\n databases = _a.sent();\n dbNames = databases.map(function (db) {\n return db.name;\n });\n\n if (!dbNames.includes(OLD_DB_NAME)) {\n // old DB didn't exist, no need to open.\n return [2\n /*return*/\n , null];\n }\n\n _a.label = 2;\n\n case 2:\n tokenDetails = null;\n return [4\n /*yield*/\n , openDb(OLD_DB_NAME, OLD_DB_VERSION, function (db) {\n return __awaiter(_this, void 0, void 0, function () {\n var objectStore, value, oldDetails, oldDetails, oldDetails;\n\n var _a;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (db.oldVersion < 2) {\n // Database too old, skip migration.\n return [2\n /*return*/\n ];\n }\n\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\n // Database did not exist. Nothing to do.\n return [2\n /*return*/\n ];\n }\n\n objectStore = db.transaction.objectStore(OLD_OBJECT_STORE_NAME);\n return [4\n /*yield*/\n , objectStore.index('fcmSenderId').get(senderId)];\n\n case 1:\n value = _b.sent();\n return [4\n /*yield*/\n , objectStore.clear()];\n\n case 2:\n _b.sent();\n\n if (!value) {\n // No entry in the database, nothing to migrate.\n return [2\n /*return*/\n ];\n }\n\n if (db.oldVersion === 2) {\n oldDetails = value;\n\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\n return [2\n /*return*/\n ];\n }\n\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\n subscriptionOptions: {\n auth: oldDetails.auth,\n p256dh: oldDetails.p256dh,\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: typeof oldDetails.vapidKey === 'string' ? oldDetails.vapidKey : arrayToBase64(oldDetails.vapidKey)\n }\n };\n } else if (db.oldVersion === 3) {\n oldDetails = value;\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: oldDetails.createTime,\n subscriptionOptions: {\n auth: arrayToBase64(oldDetails.auth),\n p256dh: arrayToBase64(oldDetails.p256dh),\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: arrayToBase64(oldDetails.vapidKey)\n }\n };\n } else if (db.oldVersion === 4) {\n oldDetails = value;\n tokenDetails = {\n token: oldDetails.fcmToken,\n createTime: oldDetails.createTime,\n subscriptionOptions: {\n auth: arrayToBase64(oldDetails.auth),\n p256dh: arrayToBase64(oldDetails.p256dh),\n endpoint: oldDetails.endpoint,\n swScope: oldDetails.swScope,\n vapidKey: arrayToBase64(oldDetails.vapidKey)\n }\n };\n }\n\n return [2\n /*return*/\n ];\n }\n });\n });\n })];\n\n case 3:\n db = _a.sent();\n db.close(); // Delete all old databases.\n\n return [4\n /*yield*/\n , deleteDb(OLD_DB_NAME)];\n\n case 4:\n // Delete all old databases.\n _a.sent();\n\n return [4\n /*yield*/\n , deleteDb('fcm_vapid_details_db')];\n\n case 5:\n _a.sent();\n\n return [4\n /*yield*/\n , deleteDb('undefined')];\n\n case 6:\n _a.sent();\n\n return [2\n /*return*/\n , checkTokenDetails(tokenDetails) ? tokenDetails : null];\n }\n });\n });\n}\n\nfunction checkTokenDetails(tokenDetails) {\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\n return false;\n }\n\n var subscriptionOptions = tokenDetails.subscriptionOptions;\n return typeof tokenDetails.createTime === 'number' && tokenDetails.createTime > 0 && typeof tokenDetails.token === 'string' && tokenDetails.token.length > 0 && typeof subscriptionOptions.auth === 'string' && subscriptionOptions.auth.length > 0 && typeof subscriptionOptions.p256dh === 'string' && subscriptionOptions.p256dh.length > 0 && typeof subscriptionOptions.endpoint === 'string' && subscriptionOptions.endpoint.length > 0 && typeof subscriptionOptions.swScope === 'string' && subscriptionOptions.swScope.length > 0 && typeof subscriptionOptions.vapidKey === 'string' && subscriptionOptions.vapidKey.length > 0;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n// Exported for tests.\n\n\nvar DATABASE_NAME = 'firebase-messaging-database';\nvar DATABASE_VERSION = 1;\nvar OBJECT_STORE_NAME = 'firebase-messaging-store';\nvar dbPromise = null;\n\nfunction getDbPromise() {\n if (!dbPromise) {\n dbPromise = openDb(DATABASE_NAME, DATABASE_VERSION, function (upgradeDb) {\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\n // because if there are multiple versions between the old version and the current version, we\n // want ALL the migrations that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (upgradeDb.oldVersion) {\n case 0:\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\n }\n });\n }\n\n return dbPromise;\n}\n/** Gets record(s) from the objectStore that match the given key. */\n\n\nfunction dbGet(firebaseDependencies) {\n return __awaiter(this, void 0, void 0, function () {\n var key, db, tokenDetails, oldTokenDetails;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n key = getKey(firebaseDependencies);\n return [4\n /*yield*/\n , getDbPromise()];\n\n case 1:\n db = _a.sent();\n return [4\n /*yield*/\n , db.transaction(OBJECT_STORE_NAME).objectStore(OBJECT_STORE_NAME).get(key)];\n\n case 2:\n tokenDetails = _a.sent();\n if (!tokenDetails) return [3\n /*break*/\n , 3];\n return [2\n /*return*/\n , tokenDetails];\n\n case 3:\n return [4\n /*yield*/\n , migrateOldDatabase(firebaseDependencies.appConfig.senderId)];\n\n case 4:\n oldTokenDetails = _a.sent();\n if (!oldTokenDetails) return [3\n /*break*/\n , 6];\n return [4\n /*yield*/\n , dbSet(firebaseDependencies, oldTokenDetails)];\n\n case 5:\n _a.sent();\n\n return [2\n /*return*/\n , oldTokenDetails];\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n/** Assigns or overwrites the record for the given key with the given value. */\n\n\nfunction dbSet(firebaseDependencies, tokenDetails) {\n return __awaiter(this, void 0, void 0, function () {\n var key, db, tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n key = getKey(firebaseDependencies);\n return [4\n /*yield*/\n , getDbPromise()];\n\n case 1:\n db = _a.sent();\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n return [4\n /*yield*/\n , tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key)];\n\n case 2:\n _a.sent();\n\n return [4\n /*yield*/\n , tx.complete];\n\n case 3:\n _a.sent();\n\n return [2\n /*return*/\n , tokenDetails];\n }\n });\n });\n}\n/** Removes record(s) from the objectStore that match the given key. */\n\n\nfunction dbRemove(firebaseDependencies) {\n return __awaiter(this, void 0, void 0, function () {\n var key, db, tx;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n key = getKey(firebaseDependencies);\n return [4\n /*yield*/\n , getDbPromise()];\n\n case 1:\n db = _a.sent();\n tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n return [4\n /*yield*/\n , tx.objectStore(OBJECT_STORE_NAME).delete(key)];\n\n case 2:\n _a.sent();\n\n return [4\n /*yield*/\n , tx.complete];\n\n case 3:\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n\nfunction getKey(_a) {\n var appConfig = _a.appConfig;\n return appConfig.appId;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction requestGetToken(firebaseDependencies, subscriptionOptions) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body, subscribeOptions, responseData, response, err_1, message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , getHeaders(firebaseDependencies)];\n\n case 1:\n headers = _a.sent();\n body = getBody(subscriptionOptions);\n subscribeOptions = {\n method: 'POST',\n headers: headers,\n body: JSON.stringify(body)\n };\n _a.label = 2;\n\n case 2:\n _a.trys.push([2, 5,, 6]);\n\n return [4\n /*yield*/\n , fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions)];\n\n case 3:\n response = _a.sent();\n return [4\n /*yield*/\n , response.json()];\n\n case 4:\n responseData = _a.sent();\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_1 = _a.sent();\n throw ERROR_FACTORY.create(\"token-subscribe-failed\"\n /* TOKEN_SUBSCRIBE_FAILED */\n , {\n errorInfo: err_1\n });\n\n case 6:\n if (responseData.error) {\n message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-subscribe-failed\"\n /* TOKEN_SUBSCRIBE_FAILED */\n , {\n errorInfo: message\n });\n }\n\n if (!responseData.token) {\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\"\n /* TOKEN_SUBSCRIBE_NO_TOKEN */\n );\n }\n\n return [2\n /*return*/\n , responseData.token];\n }\n });\n });\n}\n\nfunction requestUpdateToken(firebaseDependencies, tokenDetails) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, body, updateOptions, responseData, response, err_2, message;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , getHeaders(firebaseDependencies)];\n\n case 1:\n headers = _a.sent();\n body = getBody(tokenDetails.subscriptionOptions);\n updateOptions = {\n method: 'PATCH',\n headers: headers,\n body: JSON.stringify(body)\n };\n _a.label = 2;\n\n case 2:\n _a.trys.push([2, 5,, 6]);\n\n return [4\n /*yield*/\n , fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + tokenDetails.token, updateOptions)];\n\n case 3:\n response = _a.sent();\n return [4\n /*yield*/\n , response.json()];\n\n case 4:\n responseData = _a.sent();\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_2 = _a.sent();\n throw ERROR_FACTORY.create(\"token-update-failed\"\n /* TOKEN_UPDATE_FAILED */\n , {\n errorInfo: err_2\n });\n\n case 6:\n if (responseData.error) {\n message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-update-failed\"\n /* TOKEN_UPDATE_FAILED */\n , {\n errorInfo: message\n });\n }\n\n if (!responseData.token) {\n throw ERROR_FACTORY.create(\"token-update-no-token\"\n /* TOKEN_UPDATE_NO_TOKEN */\n );\n }\n\n return [2\n /*return*/\n , responseData.token];\n }\n });\n });\n}\n\nfunction requestDeleteToken(firebaseDependencies, token) {\n return __awaiter(this, void 0, void 0, function () {\n var headers, unsubscribeOptions, response, responseData, message, err_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , getHeaders(firebaseDependencies)];\n\n case 1:\n headers = _a.sent();\n unsubscribeOptions = {\n method: 'DELETE',\n headers: headers\n };\n _a.label = 2;\n\n case 2:\n _a.trys.push([2, 5,, 6]);\n\n return [4\n /*yield*/\n , fetch(getEndpoint(firebaseDependencies.appConfig) + \"/\" + token, unsubscribeOptions)];\n\n case 3:\n response = _a.sent();\n return [4\n /*yield*/\n , response.json()];\n\n case 4:\n responseData = _a.sent();\n\n if (responseData.error) {\n message = responseData.error.message;\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\"\n /* TOKEN_UNSUBSCRIBE_FAILED */\n , {\n errorInfo: message\n });\n }\n\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_3 = _a.sent();\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\"\n /* TOKEN_UNSUBSCRIBE_FAILED */\n , {\n errorInfo: err_3\n });\n\n case 6:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n\nfunction getEndpoint(_a) {\n var projectId = _a.projectId;\n return ENDPOINT + \"/projects/\" + projectId + \"/registrations\";\n}\n\nfunction getHeaders(_a) {\n var appConfig = _a.appConfig,\n installations = _a.installations;\n return __awaiter(this, void 0, void 0, function () {\n var authToken;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , installations.getToken()];\n\n case 1:\n authToken = _b.sent();\n return [2\n /*return*/\n , new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': appConfig.apiKey,\n 'x-goog-firebase-installations-auth': \"FIS \" + authToken\n })];\n }\n });\n });\n}\n\nfunction getBody(_a) {\n var p256dh = _a.p256dh,\n auth = _a.auth,\n endpoint = _a.endpoint,\n vapidKey = _a.vapidKey;\n var body = {\n web: {\n endpoint: endpoint,\n auth: auth,\n p256dh: p256dh\n }\n };\n\n if (vapidKey !== DEFAULT_VAPID_KEY) {\n body.web.applicationPubKey = vapidKey;\n }\n\n return body;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/** UpdateRegistration will be called once every week. */\n\n\nvar TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\n\nfunction getToken(firebaseDependencies, swRegistration, vapidKey) {\n return __awaiter(this, void 0, void 0, function () {\n var pushSubscription, tokenDetails, subscriptionOptions, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (Notification.permission !== 'granted') {\n throw ERROR_FACTORY.create(\"permission-blocked\"\n /* PERMISSION_BLOCKED */\n );\n }\n\n return [4\n /*yield*/\n , getPushSubscription(swRegistration, vapidKey)];\n\n case 1:\n pushSubscription = _a.sent();\n return [4\n /*yield*/\n , dbGet(firebaseDependencies)];\n\n case 2:\n tokenDetails = _a.sent();\n subscriptionOptions = {\n vapidKey: vapidKey,\n swScope: swRegistration.scope,\n endpoint: pushSubscription.endpoint,\n auth: arrayToBase64(pushSubscription.getKey('auth')),\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\n };\n if (!!tokenDetails) return [3\n /*break*/\n , 3]; // No token, get a new one.\n\n return [2\n /*return*/\n , getNewToken(firebaseDependencies, subscriptionOptions)];\n\n case 3:\n if (!!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) return [3\n /*break*/\n , 8];\n _a.label = 4;\n\n case 4:\n _a.trys.push([4, 6,, 7]);\n\n return [4\n /*yield*/\n , requestDeleteToken(firebaseDependencies, tokenDetails.token)];\n\n case 5:\n _a.sent();\n\n return [3\n /*break*/\n , 7];\n\n case 6:\n e_1 = _a.sent(); // Suppress errors because of #2364\n\n console.warn(e_1);\n return [3\n /*break*/\n , 7];\n\n case 7:\n return [2\n /*return*/\n , getNewToken(firebaseDependencies, subscriptionOptions)];\n\n case 8:\n if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\n // Weekly token refresh\n return [2\n /*return*/\n , updateToken({\n token: tokenDetails.token,\n createTime: Date.now(),\n subscriptionOptions: subscriptionOptions\n }, firebaseDependencies, swRegistration)];\n } else {\n // Valid token, nothing to do.\n return [2\n /*return*/\n , tokenDetails.token];\n }\n\n case 9:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\n\n\nfunction deleteToken(firebaseDependencies, swRegistration) {\n return __awaiter(this, void 0, void 0, function () {\n var tokenDetails, pushSubscription;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , dbGet(firebaseDependencies)];\n\n case 1:\n tokenDetails = _a.sent();\n if (!tokenDetails) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , requestDeleteToken(firebaseDependencies, tokenDetails.token)];\n\n case 2:\n _a.sent();\n\n return [4\n /*yield*/\n , dbRemove(firebaseDependencies)];\n\n case 3:\n _a.sent();\n\n _a.label = 4;\n\n case 4:\n return [4\n /*yield*/\n , swRegistration.pushManager.getSubscription()];\n\n case 5:\n pushSubscription = _a.sent();\n\n if (pushSubscription) {\n return [2\n /*return*/\n , pushSubscription.unsubscribe()];\n } // If there's no SW, consider it a success.\n\n\n return [2\n /*return*/\n , true];\n }\n });\n });\n}\n\nfunction updateToken(tokenDetails, firebaseDependencies, swRegistration) {\n return __awaiter(this, void 0, void 0, function () {\n var updatedToken, updatedTokenDetails, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 3,, 5]);\n\n return [4\n /*yield*/\n , requestUpdateToken(firebaseDependencies, tokenDetails)];\n\n case 1:\n updatedToken = _a.sent();\n updatedTokenDetails = __assign(__assign({}, tokenDetails), {\n token: updatedToken,\n createTime: Date.now()\n });\n return [4\n /*yield*/\n , dbSet(firebaseDependencies, updatedTokenDetails)];\n\n case 2:\n _a.sent();\n\n return [2\n /*return*/\n , updatedToken];\n\n case 3:\n e_2 = _a.sent();\n return [4\n /*yield*/\n , deleteToken(firebaseDependencies, swRegistration)];\n\n case 4:\n _a.sent();\n\n throw e_2;\n\n case 5:\n return [2\n /*return*/\n ];\n }\n });\n });\n}\n\nfunction getNewToken(firebaseDependencies, subscriptionOptions) {\n return __awaiter(this, void 0, void 0, function () {\n var token, tokenDetails;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , requestGetToken(firebaseDependencies, subscriptionOptions)];\n\n case 1:\n token = _a.sent();\n tokenDetails = {\n token: token,\n createTime: Date.now(),\n subscriptionOptions: subscriptionOptions\n };\n return [4\n /*yield*/\n , dbSet(firebaseDependencies, tokenDetails)];\n\n case 2:\n _a.sent();\n\n return [2\n /*return*/\n , tokenDetails.token];\n }\n });\n });\n}\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\n\n\nfunction getPushSubscription(swRegistration, vapidKey) {\n return __awaiter(this, void 0, void 0, function () {\n var subscription;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , swRegistration.pushManager.getSubscription()];\n\n case 1:\n subscription = _a.sent();\n\n if (subscription) {\n return [2\n /*return*/\n , subscription];\n }\n\n return [2\n /*return*/\n , swRegistration.pushManager.subscribe({\n userVisibleOnly: true,\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\n // submitted to pushManager#subscribe must be of type Uint8Array.\n applicationServerKey: base64ToArray(vapidKey)\n })];\n }\n });\n });\n}\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\n\n\nfunction isTokenValid(dbOptions, currentOptions) {\n var isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\n var isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\n var isAuthEqual = currentOptions.auth === dbOptions.auth;\n var isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\n}\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction externalizePayload(internalPayload) {\n var payload = {\n from: internalPayload.from,\n // eslint-disable-next-line camelcase\n collapseKey: internalPayload.collapse_key\n };\n propagateNotificationPayload(payload, internalPayload);\n propagateDataPayload(payload, internalPayload);\n propagateFcmOptions(payload, internalPayload);\n return payload;\n}\n\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\n if (!messagePayloadInternal.notification) {\n return;\n }\n\n payload.notification = {};\n var title = messagePayloadInternal.notification.title;\n\n if (!!title) {\n payload.notification.title = title;\n }\n\n var body = messagePayloadInternal.notification.body;\n\n if (!!body) {\n payload.notification.body = body;\n }\n\n var image = messagePayloadInternal.notification.image;\n\n if (!!image) {\n payload.notification.image = image;\n }\n}\n\nfunction propagateDataPayload(payload, messagePayloadInternal) {\n if (!messagePayloadInternal.data) {\n return;\n }\n\n payload.data = messagePayloadInternal.data;\n}\n\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\n if (!messagePayloadInternal.fcmOptions) {\n return;\n }\n\n payload.fcmOptions = {};\n var link = messagePayloadInternal.fcmOptions.link;\n\n if (!!link) {\n payload.fcmOptions.link = link;\n } // eslint-disable-next-line camelcase\n\n\n var analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\n\n if (!!analyticsLabel) {\n payload.fcmOptions.analyticsLabel = analyticsLabel;\n }\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction isConsoleMessage(data) {\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/** Returns a promise that resolves after given time passes. */\n\n\nfunction sleep(ms) {\n return new Promise(function (resolve) {\n setTimeout(resolve, ms);\n });\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar SwController =\n/** @class */\nfunction () {\n function SwController(firebaseDependencies) {\n var _this = this;\n\n this.firebaseDependencies = firebaseDependencies; // A boolean flag to determine wether an app is using onBackgroundMessage or\n // setBackgroundMessageHandler. onBackgroundMessage will receive a MessagePayload regardless of if\n // a notification is displayed. Whereas, setBackgroundMessageHandler will swallow the\n // MessagePayload if a NotificationPayload is included.\n\n this.isOnBackgroundMessageUsed = null;\n this.vapidKey = null;\n this.bgMessageHandler = null;\n self.addEventListener('push', function (e) {\n e.waitUntil(_this.onPush(e));\n });\n self.addEventListener('pushsubscriptionchange', function (e) {\n e.waitUntil(_this.onSubChange(e));\n });\n self.addEventListener('notificationclick', function (e) {\n e.waitUntil(_this.onNotificationClick(e));\n });\n }\n\n Object.defineProperty(SwController.prototype, \"app\", {\n get: function get() {\n return this.firebaseDependencies.app;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * @deprecated. Use onBackgroundMessage(nextOrObserver: NextFn | Observer):\r\n * Unsubscribe instead.\r\n *\r\n * Calling setBackgroundMessageHandler will opt in to some specific behaviors.\r\n *\r\n * 1.) If a notification doesn't need to be shown due to a window already being visible, then push\r\n * messages will be sent to the page. 2.) If a notification needs to be shown, and the message\r\n * contains no notification data this method will be called and the promise it returns will be\r\n * passed to event.waitUntil. If you do not set this callback then all push messages will let and\r\n * the developer can handle them in a their own 'push' event callback\r\n *\r\n * @param callback The callback to be called when a push message is received and a notification\r\n * must be shown. The callback will be given the data from the push message.\r\n */\n\n SwController.prototype.setBackgroundMessageHandler = function (callback) {\n this.isOnBackgroundMessageUsed = false;\n\n if (!callback || typeof callback !== 'function') {\n throw ERROR_FACTORY.create(\"invalid-bg-handler\"\n /* INVALID_BG_HANDLER */\n );\n }\n\n this.bgMessageHandler = callback;\n };\n\n SwController.prototype.onBackgroundMessage = function (nextOrObserver) {\n var _this = this;\n\n this.isOnBackgroundMessageUsed = true;\n this.bgMessageHandler = nextOrObserver;\n return function () {\n _this.bgMessageHandler = null;\n };\n }; // TODO: Remove getToken from SW Controller. Calling this from an old SW can cause all kinds of\n // trouble.\n\n\n SwController.prototype.getToken = function () {\n var _a, _b;\n\n return __awaiter(this, void 0, void 0, function () {\n var tokenDetails;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n if (!!this.vapidKey) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , dbGet(this.firebaseDependencies)];\n\n case 1:\n tokenDetails = _c.sent();\n this.vapidKey = (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY;\n _c.label = 2;\n\n case 2:\n return [2\n /*return*/\n , getToken(this.firebaseDependencies, self.registration, this.vapidKey)];\n }\n });\n });\n }; // TODO: Remove deleteToken from SW Controller. Calling this from an old SW can cause all kinds of\n // trouble.\n\n\n SwController.prototype.deleteToken = function () {\n return deleteToken(this.firebaseDependencies, self.registration);\n };\n\n SwController.prototype.requestPermission = function () {\n throw ERROR_FACTORY.create(\"only-available-in-window\"\n /* AVAILABLE_IN_WINDOW */\n );\n }; // TODO: Remove this together with getToken from SW Controller.\n\n\n SwController.prototype.usePublicVapidKey = function (vapidKey) {\n if (this.vapidKey !== null) {\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\"\n /* USE_VAPID_KEY_AFTER_GET_TOKEN */\n );\n }\n\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\n throw ERROR_FACTORY.create(\"invalid-vapid-key\"\n /* INVALID_VAPID_KEY */\n );\n }\n\n this.vapidKey = vapidKey;\n };\n\n SwController.prototype.useServiceWorker = function () {\n throw ERROR_FACTORY.create(\"only-available-in-window\"\n /* AVAILABLE_IN_WINDOW */\n );\n };\n\n SwController.prototype.onMessage = function () {\n throw ERROR_FACTORY.create(\"only-available-in-window\"\n /* AVAILABLE_IN_WINDOW */\n );\n };\n\n SwController.prototype.onTokenRefresh = function () {\n throw ERROR_FACTORY.create(\"only-available-in-window\"\n /* AVAILABLE_IN_WINDOW */\n );\n };\n /**\r\n * A handler for push events that shows notifications based on the content of the payload.\r\n *\r\n * The payload must be a JSON-encoded Object with a `notification` key. The value of the\r\n * `notification` property will be used as the NotificationOptions object passed to\r\n * showNotification. Additionally, the `title` property of the notification object will be used as\r\n * the title.\r\n *\r\n * If there is no notification data in the payload then no notification will be shown.\r\n */\n\n\n SwController.prototype.onPush = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var internalPayload, clientList, isNotificationShown, payload;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n internalPayload = getMessagePayloadInternal(event);\n\n if (!internalPayload) {\n console.debug(TAG + 'failed to get parsed MessagePayload from the PushEvent. Skip handling the push.');\n return [2\n /*return*/\n ];\n }\n\n return [4\n /*yield*/\n , getClientList()];\n\n case 1:\n clientList = _a.sent();\n\n if (hasVisibleClients(clientList)) {\n return [2\n /*return*/\n , sendMessagePayloadInternalToWindows(clientList, internalPayload)];\n }\n\n isNotificationShown = false;\n if (!!!internalPayload.notification) return [3\n /*break*/\n , 3];\n return [4\n /*yield*/\n , showNotification(wrapInternalPayload(internalPayload))];\n\n case 2:\n _a.sent();\n\n isNotificationShown = true;\n _a.label = 3;\n\n case 3:\n // MessagePayload is only passed to `onBackgroundMessage`. Skip passing MessagePayload for\n // the legacy `setBackgroundMessageHandler` to preserve the SDK behaviors.\n if (isNotificationShown === true && this.isOnBackgroundMessageUsed === false) {\n return [2\n /*return*/\n ];\n }\n\n if (!!this.bgMessageHandler) {\n payload = externalizePayload(internalPayload);\n\n if (typeof this.bgMessageHandler === 'function') {\n this.bgMessageHandler(payload);\n } else {\n this.bgMessageHandler.next(payload);\n }\n } // wait briefly to allow onBackgroundMessage to complete\n\n\n return [4\n /*yield*/\n , sleep(BACKGROUND_HANDLE_EXECUTION_TIME_LIMIT_MS)];\n\n case 4:\n // wait briefly to allow onBackgroundMessage to complete\n _a.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n SwController.prototype.onSubChange = function (event) {\n var _a, _b;\n\n return __awaiter(this, void 0, void 0, function () {\n var newSubscription, tokenDetails;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n newSubscription = event.newSubscription;\n if (!!newSubscription) return [3\n /*break*/\n , 2]; // Subscription revoked, delete token\n\n return [4\n /*yield*/\n , deleteToken(this.firebaseDependencies, self.registration)];\n\n case 1:\n // Subscription revoked, delete token\n _c.sent();\n\n return [2\n /*return*/\n ];\n\n case 2:\n return [4\n /*yield*/\n , dbGet(this.firebaseDependencies)];\n\n case 3:\n tokenDetails = _c.sent();\n return [4\n /*yield*/\n , deleteToken(this.firebaseDependencies, self.registration)];\n\n case 4:\n _c.sent();\n\n return [4\n /*yield*/\n , getToken(this.firebaseDependencies, self.registration, (_b = (_a = tokenDetails === null || tokenDetails === void 0 ? void 0 : tokenDetails.subscriptionOptions) === null || _a === void 0 ? void 0 : _a.vapidKey) !== null && _b !== void 0 ? _b : DEFAULT_VAPID_KEY)];\n\n case 5:\n _c.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n SwController.prototype.onNotificationClick = function (event) {\n var _a, _b;\n\n return __awaiter(this, void 0, void 0, function () {\n var internalPayload, link, url, originUrl, client;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n internalPayload = (_b = (_a = event.notification) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b[FCM_MSG];\n\n if (!internalPayload) {\n return [2\n /*return*/\n ];\n } else if (event.action) {\n // User clicked on an action button. This will allow developers to act on action button clicks\n // by using a custom onNotificationClick listener that they define.\n return [2\n /*return*/\n ];\n } // Prevent other listeners from receiving the event\n\n\n event.stopImmediatePropagation();\n event.notification.close();\n link = getLink(internalPayload);\n\n if (!link) {\n return [2\n /*return*/\n ];\n }\n\n url = new URL(link, self.location.href);\n originUrl = new URL(self.location.origin);\n\n if (url.host !== originUrl.host) {\n return [2\n /*return*/\n ];\n }\n\n return [4\n /*yield*/\n , getWindowClient(url)];\n\n case 1:\n client = _c.sent();\n if (!!client) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , self.clients.openWindow(link)];\n\n case 2:\n client = _c.sent(); // Wait three seconds for the client to initialize and set up the message handler so that it\n // can receive the message.\n\n return [4\n /*yield*/\n , sleep(FOREGROUND_HANDLE_PREPARATION_TIME_MS)];\n\n case 3:\n // Wait three seconds for the client to initialize and set up the message handler so that it\n // can receive the message.\n _c.sent();\n\n return [3\n /*break*/\n , 6];\n\n case 4:\n return [4\n /*yield*/\n , client.focus()];\n\n case 5:\n client = _c.sent();\n _c.label = 6;\n\n case 6:\n if (!client) {\n // Window Client will not be returned if it's for a third party origin.\n return [2\n /*return*/\n ];\n }\n\n internalPayload.messageType = MessageType.NOTIFICATION_CLICKED;\n internalPayload.isFirebaseMessaging = true;\n return [2\n /*return*/\n , client.postMessage(internalPayload)];\n }\n });\n });\n };\n\n return SwController;\n}();\n\nfunction wrapInternalPayload(internalPayload) {\n var _a;\n\n var wrappedInternalPayload = __assign({}, internalPayload.notification); // Put the message payload under FCM_MSG name so we can identify the notification as being an FCM\n // notification vs a notification from somewhere else (i.e. normal web push or developer generated\n // notification).\n\n\n wrappedInternalPayload.data = (_a = {}, _a[FCM_MSG] = internalPayload, _a);\n return wrappedInternalPayload;\n}\n\nfunction getMessagePayloadInternal(_a) {\n var data = _a.data;\n\n if (!data) {\n return null;\n }\n\n try {\n return data.json();\n } catch (err) {\n // Not JSON so not an FCM message.\n return null;\n }\n}\n/**\r\n * @param url The URL to look for when focusing a client.\r\n * @return Returns an existing window client or a newly opened WindowClient.\r\n */\n\n\nfunction getWindowClient(url) {\n return __awaiter(this, void 0, void 0, function () {\n var clientList, clientList_1, clientList_1_1, client, clientUrl;\n\n var e_1, _a;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , getClientList()];\n\n case 1:\n clientList = _b.sent();\n\n try {\n for (clientList_1 = __values(clientList), clientList_1_1 = clientList_1.next(); !clientList_1_1.done; clientList_1_1 = clientList_1.next()) {\n client = clientList_1_1.value;\n clientUrl = new URL(client.url, self.location.href);\n\n if (url.host === clientUrl.host) {\n return [2\n /*return*/\n , client];\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (clientList_1_1 && !clientList_1_1.done && (_a = clientList_1.return)) _a.call(clientList_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return [2\n /*return*/\n , null];\n }\n });\n });\n}\n/**\r\n * @returns If there is currently a visible WindowClient, this method will resolve to true,\r\n * otherwise false.\r\n */\n\n\nfunction hasVisibleClients(clientList) {\n return clientList.some(function (client) {\n return client.visibilityState === 'visible' && // Ignore chrome-extension clients as that matches the background pages of extensions, which\n // are always considered visible for some reason.\n !client.url.startsWith('chrome-extension://');\n });\n}\n\nfunction sendMessagePayloadInternalToWindows(clientList, internalPayload) {\n var e_2, _a;\n\n internalPayload.isFirebaseMessaging = true;\n internalPayload.messageType = MessageType.PUSH_RECEIVED;\n\n try {\n for (var clientList_2 = __values(clientList), clientList_2_1 = clientList_2.next(); !clientList_2_1.done; clientList_2_1 = clientList_2.next()) {\n var client = clientList_2_1.value;\n client.postMessage(internalPayload);\n }\n } catch (e_2_1) {\n e_2 = {\n error: e_2_1\n };\n } finally {\n try {\n if (clientList_2_1 && !clientList_2_1.done && (_a = clientList_2.return)) _a.call(clientList_2);\n } finally {\n if (e_2) throw e_2.error;\n }\n }\n}\n\nfunction getClientList() {\n return self.clients.matchAll({\n type: 'window',\n includeUncontrolled: true // TS doesn't know that \"type: 'window'\" means it'll return WindowClient[]\n\n });\n}\n\nfunction showNotification(notificationPayloadInternal) {\n var _a; // Note: Firefox does not support the maxActions property.\n // https://developer.mozilla.org/en-US/docs/Web/API/notification/maxActions\n\n\n var actions = notificationPayloadInternal.actions;\n var maxActions = Notification.maxActions;\n\n if (actions && maxActions && actions.length > maxActions) {\n console.warn(\"This browser only supports \" + maxActions + \" actions. The remaining actions will not be displayed.\");\n }\n\n return self.registration.showNotification(\n /* title= */\n (_a = notificationPayloadInternal.title) !== null && _a !== void 0 ? _a : '', notificationPayloadInternal);\n}\n\nfunction getLink(payload) {\n var _a, _b, _c; // eslint-disable-next-line camelcase\n\n\n var link = (_b = (_a = payload.fcmOptions) === null || _a === void 0 ? void 0 : _a.link) !== null && _b !== void 0 ? _b : (_c = payload.notification) === null || _c === void 0 ? void 0 : _c.click_action;\n\n if (link) {\n return link;\n }\n\n if (isConsoleMessage(payload.data)) {\n // Notification created in the Firebase Console. Redirect to origin.\n return self.location.origin;\n } else {\n return null;\n }\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar WindowController =\n/** @class */\nfunction () {\n function WindowController(firebaseDependencies) {\n var _this = this;\n\n this.firebaseDependencies = firebaseDependencies;\n this.vapidKey = null;\n this.onMessageCallback = null;\n navigator.serviceWorker.addEventListener('message', function (e) {\n return _this.messageEventListener(e);\n });\n }\n\n Object.defineProperty(WindowController.prototype, \"app\", {\n get: function get() {\n return this.firebaseDependencies.app;\n },\n enumerable: false,\n configurable: true\n });\n\n WindowController.prototype.messageEventListener = function (event) {\n return __awaiter(this, void 0, void 0, function () {\n var internalPayload, dataPayload;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n internalPayload = event.data;\n\n if (!internalPayload.isFirebaseMessaging) {\n return [2\n /*return*/\n ];\n } // onMessageCallback is either a function or observer/subscriber.\n // TODO: in the modularization release, have onMessage handle type MessagePayload as supposed to\n // the legacy payload where some fields are in snake cases.\n\n\n if (this.onMessageCallback && internalPayload.messageType === MessageType.PUSH_RECEIVED) {\n if (typeof this.onMessageCallback === 'function') {\n this.onMessageCallback(stripInternalFields(Object.assign({}, internalPayload)));\n } else {\n this.onMessageCallback.next(Object.assign({}, internalPayload));\n }\n }\n\n dataPayload = internalPayload.data;\n if (!(isConsoleMessage(dataPayload) && dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1')) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.logEvent(internalPayload.messageType, dataPayload)];\n\n case 1:\n _a.sent();\n\n _a.label = 2;\n\n case 2:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n WindowController.prototype.getVapidKey = function () {\n return this.vapidKey;\n };\n\n WindowController.prototype.getSwReg = function () {\n return this.swRegistration;\n };\n\n WindowController.prototype.getToken = function (options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(Notification.permission === 'default')) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , Notification.requestPermission()];\n\n case 1:\n _a.sent();\n\n _a.label = 2;\n\n case 2:\n if (Notification.permission !== 'granted') {\n throw ERROR_FACTORY.create(\"permission-blocked\"\n /* PERMISSION_BLOCKED */\n );\n }\n\n return [4\n /*yield*/\n , this.updateVapidKey(options === null || options === void 0 ? void 0 : options.vapidKey)];\n\n case 3:\n _a.sent();\n\n return [4\n /*yield*/\n , this.updateSwReg(options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration)];\n\n case 4:\n _a.sent();\n\n return [2\n /*return*/\n , getToken(this.firebaseDependencies, this.swRegistration, this.vapidKey)];\n }\n });\n });\n };\n\n WindowController.prototype.updateVapidKey = function (vapidKey) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!!vapidKey) {\n this.vapidKey = vapidKey;\n } else if (!this.vapidKey) {\n this.vapidKey = DEFAULT_VAPID_KEY;\n }\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n WindowController.prototype.updateSwReg = function (swRegistration) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!(!swRegistration && !this.swRegistration)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.registerDefaultSw()];\n\n case 1:\n _a.sent();\n\n _a.label = 2;\n\n case 2:\n if (!swRegistration && !!this.swRegistration) {\n return [2\n /*return*/\n ];\n }\n\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n throw ERROR_FACTORY.create(\"invalid-sw-registration\"\n /* INVALID_SW_REGISTRATION */\n );\n }\n\n this.swRegistration = swRegistration;\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n WindowController.prototype.registerDefaultSw = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, e_1;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 2,, 3]);\n\n _a = this;\n return [4\n /*yield*/\n , navigator.serviceWorker.register(DEFAULT_SW_PATH, {\n scope: DEFAULT_SW_SCOPE\n })];\n\n case 1:\n _a.swRegistration = _b.sent(); // The timing when browser updates sw when sw has an update is unreliable by my experiment. It\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\n // is stuck with the old version. For example,\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\n // sw if there was an update.\n\n this.swRegistration.update().catch(function () {\n /* it is non blocking and we don't care if it failed */\n });\n return [3\n /*break*/\n , 3];\n\n case 2:\n e_1 = _b.sent();\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\"\n /* FAILED_DEFAULT_REGISTRATION */\n , {\n browserErrorMessage: e_1.message\n });\n\n case 3:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n WindowController.prototype.deleteToken = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this.swRegistration) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.registerDefaultSw()];\n\n case 1:\n _a.sent();\n\n _a.label = 2;\n\n case 2:\n return [2\n /*return*/\n , deleteToken(this.firebaseDependencies, this.swRegistration)];\n }\n });\n });\n };\n /**\r\n * Request permission if it is not currently granted.\r\n *\r\n * @return Resolves if the permission was granted, rejects otherwise.\r\n *\r\n * @deprecated Use Notification.requestPermission() instead.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/Notification/requestPermission\r\n */\n\n\n WindowController.prototype.requestPermission = function () {\n return __awaiter(this, void 0, void 0, function () {\n var permissionResult;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (Notification.permission === 'granted') {\n return [2\n /*return*/\n ];\n }\n\n return [4\n /*yield*/\n , Notification.requestPermission()];\n\n case 1:\n permissionResult = _a.sent();\n\n if (permissionResult === 'granted') {\n return [2\n /*return*/\n ];\n } else if (permissionResult === 'denied') {\n throw ERROR_FACTORY.create(\"permission-blocked\"\n /* PERMISSION_BLOCKED */\n );\n } else {\n throw ERROR_FACTORY.create(\"permission-default\"\n /* PERMISSION_DEFAULT */\n );\n }\n\n }\n });\n });\n };\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\n\n\n WindowController.prototype.usePublicVapidKey = function (vapidKey) {\n if (this.vapidKey !== null) {\n throw ERROR_FACTORY.create(\"use-vapid-key-after-get-token\"\n /* USE_VAPID_KEY_AFTER_GET_TOKEN */\n );\n }\n\n if (typeof vapidKey !== 'string' || vapidKey.length === 0) {\n throw ERROR_FACTORY.create(\"invalid-vapid-key\"\n /* INVALID_VAPID_KEY */\n );\n }\n\n this.vapidKey = vapidKey;\n };\n /**\r\n * @deprecated. Use getToken(options?: {vapidKey?: string; serviceWorkerRegistration?:\r\n * ServiceWorkerRegistration;}): Promise instead.\r\n */\n\n\n WindowController.prototype.useServiceWorker = function (swRegistration) {\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\n throw ERROR_FACTORY.create(\"invalid-sw-registration\"\n /* INVALID_SW_REGISTRATION */\n );\n }\n\n if (this.swRegistration) {\n throw ERROR_FACTORY.create(\"use-sw-after-get-token\"\n /* USE_SW_AFTER_GET_TOKEN */\n );\n }\n\n this.swRegistration = swRegistration;\n };\n /**\r\n * @param nextOrObserver An observer object or a function triggered on message.\r\n *\r\n * @return The unsubscribe function for the observer.\r\n */\n\n\n WindowController.prototype.onMessage = function (nextOrObserver) {\n var _this = this;\n\n this.onMessageCallback = nextOrObserver;\n return function () {\n _this.onMessageCallback = null;\n };\n };\n\n WindowController.prototype.setBackgroundMessageHandler = function () {\n throw ERROR_FACTORY.create(\"only-available-in-sw\"\n /* AVAILABLE_IN_SW */\n );\n };\n\n WindowController.prototype.onBackgroundMessage = function () {\n throw ERROR_FACTORY.create(\"only-available-in-sw\"\n /* AVAILABLE_IN_SW */\n );\n };\n /**\r\n * @deprecated No-op. It was initially designed with token rotation requests from server in mind.\r\n * However, the plan to implement such feature was abandoned.\r\n */\n\n\n WindowController.prototype.onTokenRefresh = function () {\n return function () {};\n };\n\n WindowController.prototype.logEvent = function (messageType, data) {\n return __awaiter(this, void 0, void 0, function () {\n var eventType, analytics;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventType = getEventType(messageType);\n return [4\n /*yield*/\n , this.firebaseDependencies.analyticsProvider.get()];\n\n case 1:\n analytics = _a.sent();\n analytics.logEvent(eventType, {\n /* eslint-disable camelcase */\n message_id: data[CONSOLE_CAMPAIGN_ID],\n message_name: data[CONSOLE_CAMPAIGN_NAME],\n message_time: data[CONSOLE_CAMPAIGN_TIME],\n message_device_time: Math.floor(Date.now() / 1000)\n /* eslint-enable camelcase */\n\n });\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n return WindowController;\n}();\n\nfunction getEventType(messageType) {\n switch (messageType) {\n case MessageType.NOTIFICATION_CLICKED:\n return 'notification_open';\n\n case MessageType.PUSH_RECEIVED:\n return 'notification_foreground';\n\n default:\n throw new Error();\n }\n}\n\nfunction stripInternalFields(internalPayload) {\n delete internalPayload.messageType;\n delete internalPayload.isFirebaseMessaging;\n return internalPayload;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction extractAppConfig(app) {\n var e_1, _a;\n\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration Object');\n }\n\n if (!app.name) {\n throw getMissingValueError('App Name');\n } // Required app config keys\n\n\n var configKeys = ['projectId', 'apiKey', 'appId', 'messagingSenderId'];\n var options = app.options;\n\n try {\n for (var configKeys_1 = __values(configKeys), configKeys_1_1 = configKeys_1.next(); !configKeys_1_1.done; configKeys_1_1 = configKeys_1.next()) {\n var keyName = configKeys_1_1.value;\n\n if (!options[keyName]) {\n throw getMissingValueError(keyName);\n }\n }\n } catch (e_1_1) {\n e_1 = {\n error: e_1_1\n };\n } finally {\n try {\n if (configKeys_1_1 && !configKeys_1_1.done && (_a = configKeys_1.return)) _a.call(configKeys_1);\n } finally {\n if (e_1) throw e_1.error;\n }\n }\n\n return {\n appName: app.name,\n projectId: options.projectId,\n apiKey: options.apiKey,\n appId: options.appId,\n senderId: options.messagingSenderId\n };\n}\n\nfunction getMissingValueError(valueName) {\n return ERROR_FACTORY.create(\"missing-app-config-values\"\n /* MISSING_APP_CONFIG_VALUES */\n , {\n valueName: valueName\n });\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar MESSAGING_NAME = 'messaging';\n\nfunction factoryMethod(container) {\n // Dependencies.\n var app = container.getProvider('app').getImmediate();\n var appConfig = extractAppConfig(app);\n var installations = container.getProvider('installations').getImmediate();\n var analyticsProvider = container.getProvider('analytics-internal');\n var firebaseDependencies = {\n app: app,\n appConfig: appConfig,\n installations: installations,\n analyticsProvider: analyticsProvider\n };\n\n if (!isSupported()) {\n throw ERROR_FACTORY.create(\"unsupported-browser\"\n /* UNSUPPORTED_BROWSER */\n );\n }\n\n if (self && 'ServiceWorkerGlobalScope' in self) {\n // Running in ServiceWorker context\n return new SwController(firebaseDependencies);\n } else {\n // Assume we are in the window context.\n return new WindowController(firebaseDependencies);\n }\n}\n\nvar NAMESPACE_EXPORTS = {\n isSupported: isSupported\n};\nfirebase.INTERNAL.registerComponent(new Component(MESSAGING_NAME, factoryMethod, \"PUBLIC\"\n/* PUBLIC */\n).setServiceProps(NAMESPACE_EXPORTS));\n\nfunction isSupported() {\n if (self && 'ServiceWorkerGlobalScope' in self) {\n // Running in ServiceWorker context\n return isSWControllerSupported();\n } else {\n // Assume we are in the window context.\n return isWindowControllerSupported();\n }\n}\n/**\r\n * Checks to see if the required APIs exist.\r\n */\n\n\nfunction isWindowControllerSupported() {\n return 'indexedDB' in window && indexedDB !== null && navigator.cookieEnabled && 'serviceWorker' in navigator && 'PushManager' in window && 'Notification' in window && 'fetch' in window && ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') && PushSubscription.prototype.hasOwnProperty('getKey');\n}\n/**\r\n * Checks to see if the required APIs exist within SW Context.\r\n */\n\n\nfunction isSWControllerSupported() {\n return 'indexedDB' in self && indexedDB !== null && 'PushManager' in self && 'Notification' in self && ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') && PushSubscription.prototype.hasOwnProperty('getKey');\n}","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { publicLoader } from \"./loader\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n pathContext: this.props.pageContext,\n }\n\n const [replacementElement] = apiRunner(`replaceComponentRenderer`, {\n props: this.props,\n loader: publicLoader,\n })\n\n const pageElement =\n replacementElement ||\n createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","import invariant from \"invariant\";\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n\n var dynamicMatch = paramRe.exec(routeSegment);\n\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : invariant(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{ path: path }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\n\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\n\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\n\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\n\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return { route: route, score: score, index: index };\n};\n\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\n\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\n\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\n\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexport { startsWith, pick, match, resolve, insertParams, validateRedirect, shallowCompare };","module.exports = [{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Caja de Compensación Familiar de Antioquia\",\"short_name\":\"Comfama\",\"start_url\":\"/\",\"background_color\":\"#E62E7B\",\"theme_color\":\"#E62E7B\",\"display\":\"standalone\",\"icon\":\"src/assets/images/logos/comfama/comfama_pwa1.svg\",\"include_favicon\":false,\"cache_busting_mode\":\"query\",\"legacy\":true,\"theme_color_in_head\":true,\"cacheDigest\":\"5ab81b3043080595262479b9675b30bc\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-offline/gatsby-browser.js'),\n options: {\"plugins\":[],\"appendScript\":\"D:\\\\a\\\\1\\\\s\\\\Comfama.CosmoSchool.Home\\\\src\\\\service-workers\\\\firebase-sw.js\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-firebase-messaging/gatsby-browser.js'),\n options: {\"plugins\":[],\"config\":{\"apiKey\":\"AIzaSyCYKqp3aPr7LqdmvVy7ZdAUwwsEmHaXRnA\",\"appId\":\"1:842552250254:web:dfbee67281478b0f8f9edf\",\"messagingSenderId\":\"842552250254\",\"projectId\":\"portal-comfama\"}},\n },{\n plugin: require('../gatsby-browser.js'),\n options: {\"plugins\":[]},\n }]\n","/*!\n * domready (c) Dustin Diaz 2014 - License MIT\n * ie10 fix - Mikael Kristiansson 2019\n */\n!(function(name, definition) {\n if (typeof module != \"undefined\") module.exports = definition();\n else if (typeof define == \"function\" && typeof define.amd == \"object\")\n define(definition);\n else this[name] = definition();\n})(\"domready\", function() {\n var ie10 = false;\n if (navigator.appVersion.indexOf(\"MSIE 10\") !== -1) {\n ie10 = true;\n }\n\n var fns = [],\n listener,\n doc = typeof document === \"object\" && document,\n hack = ie10\n ? doc.documentElement.doScroll(\"left\")\n : doc.documentElement.doScroll,\n domContentLoaded = \"DOMContentLoaded\",\n loaded =\n doc && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(doc.readyState);\n\n if (!loaded && doc)\n doc.addEventListener(\n domContentLoaded,\n (listener = function() {\n doc.removeEventListener(domContentLoaded, listener);\n loaded = 1;\n while ((listener = fns.shift())) listener();\n })\n );\n\n return function(fn) {\n loaded ? setTimeout(fn, 0) : fns.push(fn);\n };\n});\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---cache-caches-gatsby-plugin-offline-app-shell-js\": () => import(\"./../../caches/gatsby-plugin-offline/app-shell.js\" /* webpackChunkName: \"component---cache-caches-gatsby-plugin-offline-app-shell-js\" */),\n \"component---src-pages-404-tsx\": () => import(\"./../../../src/pages/404.tsx\" /* webpackChunkName: \"component---src-pages-404-tsx\" */),\n \"component---src-pages-centro-de-ayuda-tsx\": () => import(\"./../../../src/pages/centro-de-ayuda.tsx\" /* webpackChunkName: \"component---src-pages-centro-de-ayuda-tsx\" */),\n \"component---src-pages-contactanos-tsx\": () => import(\"./../../../src/pages/contactanos.tsx\" /* webpackChunkName: \"component---src-pages-contactanos-tsx\" */),\n \"component---src-pages-encuentra-trabajo-con-proposito-tsx\": () => import(\"./../../../src/pages/encuentra-trabajo-con-proposito.tsx\" /* webpackChunkName: \"component---src-pages-encuentra-trabajo-con-proposito-tsx\" */),\n \"component---src-pages-programa-creo-inscripcion-tsx\": () => import(\"./../../../src/pages/programa-creo-inscripcion.tsx\" /* webpackChunkName: \"component---src-pages-programa-creo-inscripcion-tsx\" */),\n \"component---src-pages-resultados-busqueda-tsx\": () => import(\"./../../../src/pages/resultados-busqueda.tsx\" /* webpackChunkName: \"component---src-pages-resultados-busqueda-tsx\" */),\n \"component---src-templates-index-tsx\": () => import(\"./../../../src/templates/index.tsx\" /* webpackChunkName: \"component---src-templates-index-tsx\" */),\n \"component---src-templates-template-one-tsx\": () => import(\"./../../../src/templates/templateOne.tsx\" /* webpackChunkName: \"component---src-templates-template-one-tsx\" */),\n \"component---src-templates-template-three-tsx\": () => import(\"./../../../src/templates/templateThree.tsx\" /* webpackChunkName: \"component---src-templates-template-three-tsx\" */),\n \"component---src-templates-template-two-tsx\": () => import(\"./../../../src/templates/templateTwo.tsx\" /* webpackChunkName: \"component---src-templates-template-two-tsx\" */)\n}\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\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.onClientEntry = void 0;\nexports.onClientEntry = function (__, options) {\n if (options.removeFirebaseServiceWorker ||\n (process.env.NODE_ENV === 'development' && options.disableDevelopment)) {\n removeSw();\n }\n};\nvar removeSw = function () { return __awaiter(void 0, void 0, void 0, function () {\n var sws, firebaseSw;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4, navigator.serviceWorker.getRegistrations()];\n case 1:\n sws = _a.sent();\n firebaseSw = sws[sws.findIndex(function (sw) {\n return sw.scope.includes('firebase-cloud-messaging-push-scope');\n })];\n if (firebaseSw) {\n firebaseSw\n .unregister()\n .then(location.reload)\n .catch(function (err) { return console.warn(err); });\n }\n return [2];\n }\n });\n}); };\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport redirects from \"./redirects.json\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@reach/router\"\nimport { globalHistory } from \"@reach/router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\n// Convert to a map for faster lookup in maybeRedirect()\nconst redirectMap = redirects.reduce((map, redirect) => {\n map[redirect.fromPath] = redirect\n return map\n}, {})\n\nfunction maybeRedirect(pathname) {\n const redirect = redirectMap[pathname]\n\n if (redirect != null) {\n if (process.env.NODE_ENV !== `production`) {\n if (!loader.isPageNotFound(pathname)) {\n console.error(\n `The route \"${pathname}\" matches both a page and a redirect; this is probably not intentional.`\n )\n }\n }\n\n window.___replace(redirect.toPath)\n return true\n } else {\n return false\n }\n}\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n let { pathname } = parsePath(to)\n const redirect = redirectMap[pathname]\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath\n pathname = parsePath(to).pathname\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => this._stateStorage.read(args),\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n\n // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (this.props.location.href !== prevProps.location.href) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.location.href !== prevProps.location.href) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources: pageResources || loader.loadPageSync(location.pathname),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname)\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (process.env.NODE_ENV !== `production` && !this.state.pageResources) {\n throw new Error(\n `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n )\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@reach/router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport domReady from \"@mikaelkristiansson/domready\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n
\n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). But\n // only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\n if (!page || page.status === PageResourceStatus.Error) {\n throw new Error(\n `page resources for ${browserLoc.pathname} not found. Not rendering React`\n )\n }\n\n window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = () => {SiteRoot}\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrate\n )[0]\n\n domReady(() => {\n renderer(\n ,\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : void 0,\n () => {\n apiRunner(`onInitialClientRender`)\n }\n )\n })\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n push, // TODO replace for v3\n replace, // TODO remove replace for v3\n navigateTo, // TODO: remove navigateTo for v3\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","\"use strict\";\n\nmodule.exports = Object.assign;","var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable jsx-a11y/anchor-has-content */\nimport React, { useContext } from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"invariant\";\nimport createContext from \"create-react-context\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { startsWith, pick, resolve, match, insertParams, validateRedirect, shallowCompare } from \"./lib/utils\";\nimport { globalHistory, navigate, createHistory, createMemorySource } from \"./lib/history\";\n\n////////////////////////////////////////////////////////////////////////////////\n\nvar createNamedContext = function createNamedContext(name, defaultValue) {\n var Ctx = createContext(defaultValue);\n Ctx.displayName = name;\n return Ctx;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Location Context/Provider\nvar LocationContext = createNamedContext(\"Location\");\n\n// sets up a listener if there isn't one already so apps don't need to be\n// wrapped in some top level provider\nvar Location = function Location(_ref) {\n var children = _ref.children;\n return React.createElement(\n LocationContext.Consumer,\n null,\n function (context) {\n return context ? children(context) : React.createElement(\n LocationProvider,\n null,\n children\n );\n }\n );\n};\n\nvar LocationProvider = function (_React$Component) {\n _inherits(LocationProvider, _React$Component);\n\n function LocationProvider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, LocationProvider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.state = {\n context: _this.getContext(),\n refs: { unlisten: null }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n LocationProvider.prototype.getContext = function getContext() {\n var _props$history = this.props.history,\n navigate = _props$history.navigate,\n location = _props$history.location;\n\n return { navigate: navigate, location: location };\n };\n\n LocationProvider.prototype.componentDidCatch = function componentDidCatch(error, info) {\n if (isRedirect(error)) {\n var _navigate = this.props.history.navigate;\n\n _navigate(error.uri, { replace: true });\n } else {\n throw error;\n }\n };\n\n LocationProvider.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevState.context.location !== this.state.context.location) {\n this.props.history._onTransitionComplete();\n }\n };\n\n LocationProvider.prototype.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n var refs = this.state.refs,\n history = this.props.history;\n\n history._onTransitionComplete();\n refs.unlisten = history.listen(function () {\n Promise.resolve().then(function () {\n // TODO: replace rAF with react deferred update API when it's ready https://github.com/facebook/react/issues/13306\n requestAnimationFrame(function () {\n if (!_this2.unmounted) {\n _this2.setState(function () {\n return { context: _this2.getContext() };\n });\n }\n });\n });\n });\n };\n\n LocationProvider.prototype.componentWillUnmount = function componentWillUnmount() {\n var refs = this.state.refs;\n\n this.unmounted = true;\n refs.unlisten();\n };\n\n LocationProvider.prototype.render = function render() {\n var context = this.state.context,\n children = this.props.children;\n\n return React.createElement(\n LocationContext.Provider,\n { value: context },\n typeof children === \"function\" ? children(context) : children || null\n );\n };\n\n return LocationProvider;\n}(React.Component);\n\n////////////////////////////////////////////////////////////////////////////////\n\n\nLocationProvider.defaultProps = {\n history: globalHistory\n};\nprocess.env.NODE_ENV !== \"production\" ? LocationProvider.propTypes = {\n history: PropTypes.object.isRequired\n} : void 0;\nvar ServerLocation = function ServerLocation(_ref2) {\n var url = _ref2.url,\n children = _ref2.children;\n\n var searchIndex = url.indexOf(\"?\");\n var searchExists = searchIndex > -1;\n var pathname = void 0;\n var search = \"\";\n var hash = \"\";\n\n if (searchExists) {\n pathname = url.substring(0, searchIndex);\n search = url.substring(searchIndex);\n } else {\n pathname = url;\n }\n\n return React.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: pathname,\n search: search,\n hash: hash\n },\n navigate: function navigate() {\n throw new Error(\"You can't call navigate on the server.\");\n }\n }\n },\n children\n );\n};\n////////////////////////////////////////////////////////////////////////////////\n// Sets baseuri and basepath for nested routers and links\nvar BaseContext = createNamedContext(\"Base\", { baseuri: \"/\", basepath: \"/\" });\n\n////////////////////////////////////////////////////////////////////////////////\n// The main event, welcome to the show everybody.\nvar Router = function Router(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (baseContext) {\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RouterImpl, _extends({}, baseContext, locationContext, props));\n }\n );\n }\n );\n};\n\nvar RouterImpl = function (_React$PureComponent) {\n _inherits(RouterImpl, _React$PureComponent);\n\n function RouterImpl() {\n _classCallCheck(this, RouterImpl);\n\n return _possibleConstructorReturn(this, _React$PureComponent.apply(this, arguments));\n }\n\n RouterImpl.prototype.render = function render() {\n var _props = this.props,\n location = _props.location,\n _navigate2 = _props.navigate,\n basepath = _props.basepath,\n primary = _props.primary,\n children = _props.children,\n baseuri = _props.baseuri,\n _props$component = _props.component,\n component = _props$component === undefined ? \"div\" : _props$component,\n domProps = _objectWithoutProperties(_props, [\"location\", \"navigate\", \"basepath\", \"primary\", \"children\", \"baseuri\", \"component\"]);\n\n var routes = React.Children.toArray(children).reduce(function (array, child) {\n var routes = createRoute(basepath)(child);\n return array.concat(routes);\n }, []);\n var pathname = location.pathname;\n\n\n var match = pick(routes, pathname);\n\n if (match) {\n var params = match.params,\n uri = match.uri,\n route = match.route,\n element = match.route.value;\n\n // remove the /* from the end for child routes relative paths\n\n basepath = route.default ? basepath : route.path.replace(/\\*$/, \"\");\n\n var props = _extends({}, params, {\n uri: uri,\n location: location,\n navigate: function navigate(to, options) {\n return _navigate2(resolve(to, uri), options);\n }\n });\n\n var clone = React.cloneElement(element, props, element.props.children ? React.createElement(\n Router,\n { location: location, primary: primary },\n element.props.children\n ) : undefined);\n\n // using 'div' for < 16.3 support\n var FocusWrapper = primary ? FocusHandler : component;\n // don't pass any props to 'div'\n var wrapperProps = primary ? _extends({ uri: uri, location: location, component: component }, domProps) : domProps;\n\n return React.createElement(\n BaseContext.Provider,\n { value: { baseuri: uri, basepath: basepath } },\n React.createElement(\n FocusWrapper,\n wrapperProps,\n clone\n )\n );\n } else {\n // Not sure if we want this, would require index routes at every level\n // warning(\n // false,\n // `\\n\\nNothing matched:\\n\\t${\n // location.pathname\n // }\\n\\nPaths checked: \\n\\t${routes\n // .map(route => route.path)\n // .join(\n // \"\\n\\t\"\n // )}\\n\\nTo get rid of this warning, add a default NotFound component as child of Router:\n // \\n\\tlet NotFound = () =>
Not Found!
\n // \\n\\t\\n\\t \\n\\t {/* ... */}\\n\\t`\n // );\n return null;\n }\n };\n\n return RouterImpl;\n}(React.PureComponent);\n\nRouterImpl.defaultProps = {\n primary: true\n};\n\n\nvar FocusContext = createNamedContext(\"Focus\");\n\nvar FocusHandler = function FocusHandler(_ref3) {\n var uri = _ref3.uri,\n location = _ref3.location,\n component = _ref3.component,\n domProps = _objectWithoutProperties(_ref3, [\"uri\", \"location\", \"component\"]);\n\n return React.createElement(\n FocusContext.Consumer,\n null,\n function (requestFocus) {\n return React.createElement(FocusHandlerImpl, _extends({}, domProps, {\n component: component,\n requestFocus: requestFocus,\n uri: uri,\n location: location\n }));\n }\n );\n};\n\n// don't focus on initial render\nvar initialRender = true;\nvar focusHandlerCount = 0;\n\nvar FocusHandlerImpl = function (_React$Component2) {\n _inherits(FocusHandlerImpl, _React$Component2);\n\n function FocusHandlerImpl() {\n var _temp2, _this4, _ret2;\n\n _classCallCheck(this, FocusHandlerImpl);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this4 = _possibleConstructorReturn(this, _React$Component2.call.apply(_React$Component2, [this].concat(args))), _this4), _this4.state = {}, _this4.requestFocus = function (node) {\n if (!_this4.state.shouldFocus && node) {\n node.focus();\n }\n }, _temp2), _possibleConstructorReturn(_this4, _ret2);\n }\n\n FocusHandlerImpl.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, prevState) {\n var initial = prevState.uri == null;\n if (initial) {\n return _extends({\n shouldFocus: true\n }, nextProps);\n } else {\n var myURIChanged = nextProps.uri !== prevState.uri;\n var navigatedUpToMe = prevState.location.pathname !== nextProps.location.pathname && nextProps.location.pathname === nextProps.uri;\n return _extends({\n shouldFocus: myURIChanged || navigatedUpToMe\n }, nextProps);\n }\n };\n\n FocusHandlerImpl.prototype.componentDidMount = function componentDidMount() {\n focusHandlerCount++;\n this.focus();\n };\n\n FocusHandlerImpl.prototype.componentWillUnmount = function componentWillUnmount() {\n focusHandlerCount--;\n if (focusHandlerCount === 0) {\n initialRender = true;\n }\n };\n\n FocusHandlerImpl.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n if (prevProps.location !== this.props.location && this.state.shouldFocus) {\n this.focus();\n }\n };\n\n FocusHandlerImpl.prototype.focus = function focus() {\n if (process.env.NODE_ENV === \"test\") {\n // getting cannot read property focus of null in the tests\n // and that bit of global `initialRender` state causes problems\n // should probably figure it out!\n return;\n }\n\n var requestFocus = this.props.requestFocus;\n\n\n if (requestFocus) {\n requestFocus(this.node);\n } else {\n if (initialRender) {\n initialRender = false;\n } else if (this.node) {\n // React polyfills [autofocus] and it fires earlier than cDM,\n // so we were stealing focus away, this line prevents that.\n if (!this.node.contains(document.activeElement)) {\n this.node.focus();\n }\n }\n }\n };\n\n FocusHandlerImpl.prototype.render = function render() {\n var _this5 = this;\n\n var _props2 = this.props,\n children = _props2.children,\n style = _props2.style,\n requestFocus = _props2.requestFocus,\n _props2$component = _props2.component,\n Comp = _props2$component === undefined ? \"div\" : _props2$component,\n uri = _props2.uri,\n location = _props2.location,\n domProps = _objectWithoutProperties(_props2, [\"children\", \"style\", \"requestFocus\", \"component\", \"uri\", \"location\"]);\n\n return React.createElement(\n Comp,\n _extends({\n style: _extends({ outline: \"none\" }, style),\n tabIndex: \"-1\",\n ref: function ref(n) {\n return _this5.node = n;\n }\n }, domProps),\n React.createElement(\n FocusContext.Provider,\n { value: this.requestFocus },\n this.props.children\n )\n );\n };\n\n return FocusHandlerImpl;\n}(React.Component);\n\npolyfill(FocusHandlerImpl);\n\nvar k = function k() {};\n\n////////////////////////////////////////////////////////////////////////////////\nvar forwardRef = React.forwardRef;\n\nif (typeof forwardRef === \"undefined\") {\n forwardRef = function forwardRef(C) {\n return C;\n };\n}\n\nvar Link = forwardRef(function (_ref4, ref) {\n var innerRef = _ref4.innerRef,\n props = _objectWithoutProperties(_ref4, [\"innerRef\"]);\n\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref5) {\n var basepath = _ref5.basepath,\n baseuri = _ref5.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref6) {\n var location = _ref6.location,\n navigate = _ref6.navigate;\n\n var to = props.to,\n state = props.state,\n replace = props.replace,\n _props$getProps = props.getProps,\n getProps = _props$getProps === undefined ? k : _props$getProps,\n anchorProps = _objectWithoutProperties(props, [\"to\", \"state\", \"replace\", \"getProps\"]);\n\n var href = resolve(to, baseuri);\n var encodedHref = encodeURI(href);\n var isCurrent = location.pathname === encodedHref;\n var isPartiallyCurrent = startsWith(location.pathname, encodedHref);\n\n return React.createElement(\"a\", _extends({\n ref: ref || innerRef,\n \"aria-current\": isCurrent ? \"page\" : undefined\n }, anchorProps, getProps({ isCurrent: isCurrent, isPartiallyCurrent: isPartiallyCurrent, href: href, location: location }), {\n href: href,\n onClick: function onClick(event) {\n if (anchorProps.onClick) anchorProps.onClick(event);\n if (shouldNavigate(event)) {\n event.preventDefault();\n var shouldReplace = replace;\n if (typeof replace !== \"boolean\" && isCurrent) {\n var _location$state = _extends({}, location.state),\n key = _location$state.key,\n restState = _objectWithoutProperties(_location$state, [\"key\"]);\n\n shouldReplace = shallowCompare(_extends({}, state), restState);\n }\n navigate(href, {\n state: state,\n replace: shouldReplace\n });\n }\n }\n }));\n }\n );\n }\n );\n});\n\nLink.displayName = \"Link\";\n\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nfunction RedirectRequest(uri) {\n this.uri = uri;\n}\n\nvar isRedirect = function isRedirect(o) {\n return o instanceof RedirectRequest;\n};\n\nvar redirectTo = function redirectTo(to) {\n throw new RedirectRequest(to);\n};\n\nvar RedirectImpl = function (_React$Component3) {\n _inherits(RedirectImpl, _React$Component3);\n\n function RedirectImpl() {\n _classCallCheck(this, RedirectImpl);\n\n return _possibleConstructorReturn(this, _React$Component3.apply(this, arguments));\n }\n\n // Support React < 16 with this hook\n RedirectImpl.prototype.componentDidMount = function componentDidMount() {\n var _props3 = this.props,\n navigate = _props3.navigate,\n to = _props3.to,\n from = _props3.from,\n _props3$replace = _props3.replace,\n replace = _props3$replace === undefined ? true : _props3$replace,\n state = _props3.state,\n noThrow = _props3.noThrow,\n baseuri = _props3.baseuri,\n props = _objectWithoutProperties(_props3, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n Promise.resolve().then(function () {\n var resolvedTo = resolve(to, baseuri);\n navigate(insertParams(resolvedTo, props), { replace: replace, state: state });\n });\n };\n\n RedirectImpl.prototype.render = function render() {\n var _props4 = this.props,\n navigate = _props4.navigate,\n to = _props4.to,\n from = _props4.from,\n replace = _props4.replace,\n state = _props4.state,\n noThrow = _props4.noThrow,\n baseuri = _props4.baseuri,\n props = _objectWithoutProperties(_props4, [\"navigate\", \"to\", \"from\", \"replace\", \"state\", \"noThrow\", \"baseuri\"]);\n\n var resolvedTo = resolve(to, baseuri);\n if (!noThrow) redirectTo(insertParams(resolvedTo, props));\n return null;\n };\n\n return RedirectImpl;\n}(React.Component);\n\nvar Redirect = function Redirect(props) {\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref7) {\n var baseuri = _ref7.baseuri;\n return React.createElement(\n Location,\n null,\n function (locationContext) {\n return React.createElement(RedirectImpl, _extends({}, locationContext, { baseuri: baseuri }, props));\n }\n );\n }\n );\n};\n\nprocess.env.NODE_ENV !== \"production\" ? Redirect.propTypes = {\n from: PropTypes.string,\n to: PropTypes.string.isRequired\n} : void 0;\n\n////////////////////////////////////////////////////////////////////////////////\nvar Match = function Match(_ref8) {\n var path = _ref8.path,\n children = _ref8.children;\n return React.createElement(\n BaseContext.Consumer,\n null,\n function (_ref9) {\n var baseuri = _ref9.baseuri;\n return React.createElement(\n Location,\n null,\n function (_ref10) {\n var navigate = _ref10.navigate,\n location = _ref10.location;\n\n var resolvedPath = resolve(path, baseuri);\n var result = match(resolvedPath, location.pathname);\n return children({\n navigate: navigate,\n location: location,\n match: result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null\n });\n }\n );\n }\n );\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Hooks\n\nvar useLocation = function useLocation() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useLocation hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.location;\n};\n\nvar useNavigate = function useNavigate() {\n var context = useContext(LocationContext);\n\n if (!context) {\n throw new Error(\"useNavigate hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n return context.navigate;\n};\n\nvar useParams = function useParams() {\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useParams hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var results = match(context.basepath, location.pathname);\n\n return results ? results.params : null;\n};\n\nvar useMatch = function useMatch(path) {\n if (!path) {\n throw new Error(\"useMatch(path: string) requires an argument of a string to match against\");\n }\n var context = useContext(BaseContext);\n\n if (!context) {\n throw new Error(\"useMatch hook was used but a LocationContext.Provider was not found in the parent tree. Make sure this is used in a component that is a child of Router\");\n }\n\n var location = useLocation();\n\n var resolvedPath = resolve(path, context.baseuri);\n var result = match(resolvedPath, location.pathname);\n return result ? _extends({}, result.params, {\n uri: result.uri,\n path: path\n }) : null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar stripSlashes = function stripSlashes(str) {\n return str.replace(/(^\\/+|\\/+$)/g, \"\");\n};\n\nvar createRoute = function createRoute(basepath) {\n return function (element) {\n if (!element) {\n return null;\n }\n\n if (element.type === React.Fragment && element.props.children) {\n return React.Children.map(element.props.children, createRoute(basepath));\n }\n !(element.props.path || element.props.default || element.type === Redirect) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \": Children of must have a `path` or `default` prop, or be a ``. None found on element type `\" + element.type + \"`\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && (!element.props.from || !element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" requires both \\\"from\\\" and \\\"to\\\" props when inside a .\") : invariant(false) : void 0;\n\n !!(element.type === Redirect && !validateRedirect(element.props.from, element.props.to)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, \" has mismatched dynamic segments, ensure both paths have the exact same dynamic segments.\") : invariant(false) : void 0;\n\n if (element.props.default) {\n return { value: element, default: true };\n }\n\n var elementPath = element.type === Redirect ? element.props.from : element.props.path;\n\n var path = elementPath === \"/\" ? basepath : stripSlashes(basepath) + \"/\" + stripSlashes(elementPath);\n\n return {\n value: element,\n default: element.props.default,\n path: element.props.children ? stripSlashes(path) + \"/*\" : path\n };\n };\n};\n\nvar shouldNavigate = function shouldNavigate(event) {\n return !event.defaultPrevented && event.button === 0 && !(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n};\n\n////////////////////////////////////////////////////////////////////////\nexport { Link, Location, LocationProvider, Match, Redirect, Router, ServerLocation, createHistory, createMemorySource, isRedirect, navigate, redirectTo, globalHistory, match as matchPath, useLocation, useNavigate, useParams, useMatch , BaseContext };","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\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}","\"use strict\";\n\nexports.registerServiceWorker = function () {\n return true;\n}; // only cache relevant resources for this page\n\n\nvar whiteListLinkRels = /^(stylesheet|preload)$/;\nvar prefetchedPathnames = [];\n\nexports.onServiceWorkerActive = function (_ref) {\n var getResourceURLsForPathname = _ref.getResourceURLsForPathname,\n serviceWorker = _ref.serviceWorker;\n\n // if the SW has just updated then clear the path dependencies and don't cache\n // stuff, since we're on the old revision until we navigate to another page\n if (window.___swUpdated) {\n serviceWorker.active.postMessage({\n gatsbyApi: \"clearPathResources\"\n });\n return;\n } // grab nodes from head of document\n\n\n var nodes = document.querySelectorAll(\"\\n head > script[src],\\n head > link[href],\\n head > style[data-href]\\n \"); // get all resource URLs\n\n var headerResources = [].slice.call(nodes) // don't include preconnect/prefetch/prerender resources\n .filter(function (node) {\n return node.tagName !== \"LINK\" || whiteListLinkRels.test(node.getAttribute(\"rel\"));\n }).map(function (node) {\n return node.src || node.href || node.getAttribute(\"data-href\");\n }); // Loop over prefetched pages and add their resources to an array,\n // plus specify which resources are required for those paths.\n\n var prefetchedResources = [];\n prefetchedPathnames.forEach(function (path) {\n var resources = getResourceURLsForPathname(path);\n prefetchedResources.push.apply(prefetchedResources, resources);\n serviceWorker.active.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }); // Loop over all resources and fetch the page component + JSON data\n // to add it to the SW cache.\n\n var resources = [].concat(headerResources, prefetchedResources);\n resources.forEach(function (resource) {\n // Create a prefetch link for each resource, so Workbox runtime-caches them\n var link = document.createElement(\"link\");\n link.rel = \"prefetch\";\n link.href = resource;\n link.onload = link.remove;\n link.onerror = link.remove;\n document.head.appendChild(link);\n });\n};\n\nfunction setPathResources(path, getResourceURLsForPathname) {\n // do nothing if the SW has just updated, since we still have old pages in\n // memory which we don't want to be whitelisted\n if (window.___swUpdated) return;\n\n if (\"serviceWorker\" in navigator) {\n var _navigator = navigator,\n serviceWorker = _navigator.serviceWorker;\n\n if (serviceWorker.controller === null) {\n // if SW is not installed, we need to record any prefetches\n // that happen so we can then add them to SW cache once installed\n prefetchedPathnames.push(path);\n } else {\n var resources = getResourceURLsForPathname(path);\n serviceWorker.controller.postMessage({\n gatsbyApi: \"setPathResources\",\n path: path,\n resources: resources\n });\n }\n }\n}\n\nexports.onRouteUpdate = function (_ref2) {\n var location = _ref2.location,\n getResourceURLsForPathname = _ref2.getResourceURLsForPathname;\n var pathname = location.pathname.replace(__BASE_PATH__, \"\");\n setPathResources(pathname, getResourceURLsForPathname);\n\n if (\"serviceWorker\" in navigator && navigator.serviceWorker.controller !== null) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: \"enableOfflineShell\"\n });\n }\n};\n\nexports.onPostPrefetchPathname = function (_ref3) {\n var pathname = _ref3.pathname,\n getResourceURLsForPathname = _ref3.getResourceURLsForPathname;\n setPathResources(pathname, getResourceURLsForPathname);\n};","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404 page and it doesn't exist, we're done\n if (pagePath === `/404.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component) {\n finalResult.status = PageResourceStatus.Error\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n ).then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return Promise.all([componentChunkPromise, staticQueryBatchPromise]).then(\n ([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n return payload\n }\n )\n })\n\n inFlightPromise\n .then(response => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if loading page ran into errors\n loadPageSync(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath).payload\n return pageData\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return false\n }\n\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths) {\n const loadComponent = chunkName =>\n asyncRequires.components[chunkName]\n ? asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is null\n .catch(() => null)\n : Promise.resolve()\n\n super(loadComponent, matchPaths)\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n // Deprecated methods. As far as we're aware, these are only used by\n // core gatsby and the offline plugin, however there's a very small\n // chance they're called by others.\n getResourcesForPathname: rawPath => {\n console.warn(\n `Warning: getResourcesForPathname is deprecated. Use loadPage instead`\n )\n return instance.i.loadPage(rawPath)\n },\n getResourcesForPathnameSync: rawPath => {\n console.warn(\n `Warning: getResourcesForPathnameSync is deprecated. Use loadPageSync instead`\n )\n return instance.i.loadPageSync(rawPath)\n },\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n loadPageSync: rawPath => instance.loadPageSync(rawPath),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","\"use strict\";\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollContainer = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _router = require(\"@reach/router\");\n\n// TODO: In Gatsby v3, this file should be removed.\n// We are deprecating this in V2 in favor of useScrollRestoration\nvar propTypes = {\n scrollKey: _propTypes.default.string.isRequired,\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired\n};\nvar hasNotWarnedDeprecation = true;\n\nvar ScrollContainerImplementation = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollContainerImplementation, _React$Component);\n\n function ScrollContainerImplementation(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this;\n\n if (process.env.NODE_ENV !== \"production\" && hasNotWarnedDeprecation) {\n hasNotWarnedDeprecation = false;\n console.log(\"Deprecation Warning:\\n\\n Gatsby is deprecated in Gatsby v2 and will be removed in Gatsby v3.\\n Update to the React hook alternative useScrollRestoration, like this:.\\n \\n ```\\n import React from 'react';\\n import { useScrollRestoration } from 'gatsby-react-router-scroll';\\n\\n function Component() {\\n const scrollRestoration = useScrollRestoration('\" + _this.props.scrollKey + \"');\\n\\n return
    ;\\n }\\n ```\\n \");\n }\n\n return _this;\n }\n\n var _proto = ScrollContainerImplementation.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n var _this2 = this;\n\n // eslint-disable-next-line react/no-find-dom-node\n var node = _reactDom.default.findDOMNode(this);\n\n var _this$props = this.props,\n location = _this$props.location,\n scrollKey = _this$props.scrollKey;\n if (!node) return;\n node.addEventListener(\"scroll\", function () {\n _this2.props.context.save(location, scrollKey, node.scrollTop);\n });\n var position = this.props.context.read(location, scrollKey);\n node.scrollTo(0, position || 0);\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return ScrollContainerImplementation;\n}(React.Component);\n\nvar ScrollContainer = function ScrollContainer(props) {\n return /*#__PURE__*/React.createElement(_router.Location, null, function (_ref) {\n var location = _ref.location;\n return /*#__PURE__*/React.createElement(_scrollHandler.ScrollContext.Consumer, null, function (context) {\n return /*#__PURE__*/React.createElement(ScrollContainerImplementation, (0, _extends2.default)({}, props, {\n context: context,\n location: location\n }));\n });\n });\n};\n\nexports.ScrollContainer = ScrollContainer;\nScrollContainer.propTypes = propTypes;","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","var _typeof = require(\"@babel/runtime/helpers/typeof\");\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj[\"default\"] = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nmodule.exports = _interopRequireWildcard;","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (global = global || self, factory(global.idb = {}));\n})(this, function (exports) {\n 'use strict';\n\n function toArray(arr) {\n return Array.prototype.slice.call(arr);\n }\n\n function promisifyRequest(request) {\n return new Promise(function (resolve, reject) {\n request.onsuccess = function () {\n resolve(request.result);\n };\n\n request.onerror = function () {\n reject(request.error);\n };\n });\n }\n\n function promisifyRequestCall(obj, method, args) {\n var request;\n var p = new Promise(function (resolve, reject) {\n request = obj[method].apply(obj, args);\n promisifyRequest(request).then(resolve, reject);\n });\n p.request = request;\n return p;\n }\n\n function promisifyCursorRequestCall(obj, method, args) {\n var p = promisifyRequestCall(obj, method, args);\n return p.then(function (value) {\n if (!value) return;\n return new Cursor(value, p.request);\n });\n }\n\n function proxyProperties(ProxyClass, targetProp, properties) {\n properties.forEach(function (prop) {\n Object.defineProperty(ProxyClass.prototype, prop, {\n get: function get() {\n return this[targetProp][prop];\n },\n set: function set(val) {\n this[targetProp][prop] = val;\n }\n });\n });\n }\n\n function proxyRequestMethods(ProxyClass, targetProp, Constructor, properties) {\n properties.forEach(function (prop) {\n if (!(prop in Constructor.prototype)) return;\n\n ProxyClass.prototype[prop] = function () {\n return promisifyRequestCall(this[targetProp], prop, arguments);\n };\n });\n }\n\n function proxyMethods(ProxyClass, targetProp, Constructor, properties) {\n properties.forEach(function (prop) {\n if (!(prop in Constructor.prototype)) return;\n\n ProxyClass.prototype[prop] = function () {\n return this[targetProp][prop].apply(this[targetProp], arguments);\n };\n });\n }\n\n function proxyCursorRequestMethods(ProxyClass, targetProp, Constructor, properties) {\n properties.forEach(function (prop) {\n if (!(prop in Constructor.prototype)) return;\n\n ProxyClass.prototype[prop] = function () {\n return promisifyCursorRequestCall(this[targetProp], prop, arguments);\n };\n });\n }\n\n function Index(index) {\n this._index = index;\n }\n\n proxyProperties(Index, '_index', ['name', 'keyPath', 'multiEntry', 'unique']);\n proxyRequestMethods(Index, '_index', IDBIndex, ['get', 'getKey', 'getAll', 'getAllKeys', 'count']);\n proxyCursorRequestMethods(Index, '_index', IDBIndex, ['openCursor', 'openKeyCursor']);\n\n function Cursor(cursor, request) {\n this._cursor = cursor;\n this._request = request;\n }\n\n proxyProperties(Cursor, '_cursor', ['direction', 'key', 'primaryKey', 'value']);\n proxyRequestMethods(Cursor, '_cursor', IDBCursor, ['update', 'delete']); // proxy 'next' methods\n\n ['advance', 'continue', 'continuePrimaryKey'].forEach(function (methodName) {\n if (!(methodName in IDBCursor.prototype)) return;\n\n Cursor.prototype[methodName] = function () {\n var cursor = this;\n var args = arguments;\n return Promise.resolve().then(function () {\n cursor._cursor[methodName].apply(cursor._cursor, args);\n\n return promisifyRequest(cursor._request).then(function (value) {\n if (!value) return;\n return new Cursor(value, cursor._request);\n });\n });\n };\n });\n\n function ObjectStore(store) {\n this._store = store;\n }\n\n ObjectStore.prototype.createIndex = function () {\n return new Index(this._store.createIndex.apply(this._store, arguments));\n };\n\n ObjectStore.prototype.index = function () {\n return new Index(this._store.index.apply(this._store, arguments));\n };\n\n proxyProperties(ObjectStore, '_store', ['name', 'keyPath', 'indexNames', 'autoIncrement']);\n proxyRequestMethods(ObjectStore, '_store', IDBObjectStore, ['put', 'add', 'delete', 'clear', 'get', 'getAll', 'getKey', 'getAllKeys', 'count']);\n proxyCursorRequestMethods(ObjectStore, '_store', IDBObjectStore, ['openCursor', 'openKeyCursor']);\n proxyMethods(ObjectStore, '_store', IDBObjectStore, ['deleteIndex']);\n\n function Transaction(idbTransaction) {\n this._tx = idbTransaction;\n this.complete = new Promise(function (resolve, reject) {\n idbTransaction.oncomplete = function () {\n resolve();\n };\n\n idbTransaction.onerror = function () {\n reject(idbTransaction.error);\n };\n\n idbTransaction.onabort = function () {\n reject(idbTransaction.error);\n };\n });\n }\n\n Transaction.prototype.objectStore = function () {\n return new ObjectStore(this._tx.objectStore.apply(this._tx, arguments));\n };\n\n proxyProperties(Transaction, '_tx', ['objectStoreNames', 'mode']);\n proxyMethods(Transaction, '_tx', IDBTransaction, ['abort']);\n\n function UpgradeDB(db, oldVersion, transaction) {\n this._db = db;\n this.oldVersion = oldVersion;\n this.transaction = new Transaction(transaction);\n }\n\n UpgradeDB.prototype.createObjectStore = function () {\n return new ObjectStore(this._db.createObjectStore.apply(this._db, arguments));\n };\n\n proxyProperties(UpgradeDB, '_db', ['name', 'version', 'objectStoreNames']);\n proxyMethods(UpgradeDB, '_db', IDBDatabase, ['deleteObjectStore', 'close']);\n\n function DB(db) {\n this._db = db;\n }\n\n DB.prototype.transaction = function () {\n return new Transaction(this._db.transaction.apply(this._db, arguments));\n };\n\n proxyProperties(DB, '_db', ['name', 'version', 'objectStoreNames']);\n proxyMethods(DB, '_db', IDBDatabase, ['close']); // Add cursor iterators\n // TODO: remove this once browsers do the right thing with promises\n\n ['openCursor', 'openKeyCursor'].forEach(function (funcName) {\n [ObjectStore, Index].forEach(function (Constructor) {\n // Don't create iterateKeyCursor if openKeyCursor doesn't exist.\n if (!(funcName in Constructor.prototype)) return;\n\n Constructor.prototype[funcName.replace('open', 'iterate')] = function () {\n var args = toArray(arguments);\n var callback = args[args.length - 1];\n var nativeObject = this._store || this._index;\n var request = nativeObject[funcName].apply(nativeObject, args.slice(0, -1));\n\n request.onsuccess = function () {\n callback(request.result);\n };\n };\n });\n }); // polyfill getAll\n\n [Index, ObjectStore].forEach(function (Constructor) {\n if (Constructor.prototype.getAll) return;\n\n Constructor.prototype.getAll = function (query, count) {\n var instance = this;\n var items = [];\n return new Promise(function (resolve) {\n instance.iterateCursor(query, function (cursor) {\n if (!cursor) {\n resolve(items);\n return;\n }\n\n items.push(cursor.value);\n\n if (count !== undefined && items.length == count) {\n resolve(items);\n return;\n }\n\n cursor.continue();\n });\n });\n };\n });\n\n function openDb(name, version, upgradeCallback) {\n var p = promisifyRequestCall(indexedDB, 'open', [name, version]);\n var request = p.request;\n\n if (request) {\n request.onupgradeneeded = function (event) {\n if (upgradeCallback) {\n upgradeCallback(new UpgradeDB(request.result, event.oldVersion, request.transaction));\n }\n };\n }\n\n return p.then(function (db) {\n return new DB(db);\n });\n }\n\n function deleteDb(name) {\n return promisifyRequestCall(indexedDB, 'deleteDatabase', [name]);\n }\n\n exports.openDb = openDb;\n exports.deleteDb = deleteDb;\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n var withPrefix = _gatsby.withAssetPrefix || _gatsby.withPrefix;\n\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", withPrefix(manifestFilename));\n }\n };\n}","/*\n Why commonjs and not ES imports/exports?\n\n This module is used to alias `create-react-context` package, but drop the the actual implementation part\n because Gatsby requires version of react that has implementatoin baked in.\n \n Package source is using ES modules:\n - https://github.com/jamiebuilds/create-react-context/blob/v0.3.0/src/index.js\n \n But to build this package `babel-plugin-add-module-exports` is used ( https://www.npmjs.com/package/babel-plugin-add-module-exports).\n Which result in both `module.exports` and `exports.default` being set to same thing.\n\n We don't use that babel plugin so we only have `exports.default`.\n\n This cause problems in various 3rd party react components that rely on `module.exports` being set.\n See https://github.com/gatsbyjs/gatsby/issues/23645 for example of it.\n \n Instead of adding same babel plugin we mimic output here. Adding babel plugin just for this would:\n a) unnecesairly slow down compilation for all other files (if we just apply it everywhere)\n b) or complicate babel-loader configuration with overwrite specifically for this file\n*/\n\nconst { createContext } = require(`react`)\n\nmodule.exports = createContext\nmodule.exports.default = createContext\n","import { __extends } from 'tslib';\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\n\nvar CONSTANTS = {\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\n NODE_CLIENT: false,\n\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\n NODE_ADMIN: false,\n\n /**\r\n * Firebase SDK Version\r\n */\n SDK_VERSION: '${JSCORE_VERSION}'\n};\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\n\nvar assert = function assert(assertion, message) {\n if (!assertion) {\n throw assertionError(message);\n }\n};\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\n\n\nvar assertionError = function assertionError(message) {\n return new Error('Firebase Database (' + CONSTANTS.SDK_VERSION + ') INTERNAL ASSERT FAILED: ' + message);\n};\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar stringToByteArray = function stringToByteArray(str) {\n // TODO(user): Use native implementations if/when available\n var out = [];\n var p = 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = c >> 6 | 192;\n out[p++] = c & 63 | 128;\n } else if ((c & 0xfc00) === 0xd800 && i + 1 < str.length && (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = c >> 18 | 240;\n out[p++] = c >> 12 & 63 | 128;\n out[p++] = c >> 6 & 63 | 128;\n out[p++] = c & 63 | 128;\n } else {\n out[p++] = c >> 12 | 224;\n out[p++] = c >> 6 & 63 | 128;\n out[p++] = c & 63 | 128;\n }\n }\n\n return out;\n};\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\n\n\nvar byteArrayToString = function byteArrayToString(bytes) {\n // TODO(user): Use native implementations if/when available\n var out = [];\n var pos = 0,\n c = 0;\n\n while (pos < bytes.length) {\n var c1 = bytes[pos++];\n\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n } else if (c1 > 191 && c1 < 224) {\n var c2 = bytes[pos++];\n out[c++] = String.fromCharCode((c1 & 31) << 6 | c2 & 63);\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n var c2 = bytes[pos++];\n var c3 = bytes[pos++];\n var c4 = bytes[pos++];\n var u = ((c1 & 7) << 18 | (c2 & 63) << 12 | (c3 & 63) << 6 | c4 & 63) - 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n } else {\n var c2 = bytes[pos++];\n var c3 = bytes[pos++];\n out[c++] = String.fromCharCode((c1 & 15) << 12 | (c2 & 63) << 6 | c3 & 63);\n }\n }\n\n return out.join('');\n}; // We define it as an object literal instead of a class because a class compiled down to es5 can't\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\n// Static lookup maps, lazily populated by init_()\n\n\nvar base64 = {\n /**\r\n * Maps bytes to characters.\r\n */\n byteToCharMap_: null,\n\n /**\r\n * Maps characters to bytes.\r\n */\n charToByteMap_: null,\n\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\n byteToCharMapWebSafe_: null,\n\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\n charToByteMapWebSafe_: null,\n\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n\n /**\r\n * Our websafe alphabet.\r\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\n encodeByteArray: function encodeByteArray(input, webSafe) {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n\n this.init_();\n var byteToCharMap = webSafe ? this.byteToCharMapWebSafe_ : this.byteToCharMap_;\n var output = [];\n\n for (var i = 0; i < input.length; i += 3) {\n var byte1 = input[i];\n var haveByte2 = i + 1 < input.length;\n var byte2 = haveByte2 ? input[i + 1] : 0;\n var haveByte3 = i + 2 < input.length;\n var byte3 = haveByte3 ? input[i + 2] : 0;\n var outByte1 = byte1 >> 2;\n var outByte2 = (byte1 & 0x03) << 4 | byte2 >> 4;\n var outByte3 = (byte2 & 0x0f) << 2 | byte3 >> 6;\n var outByte4 = byte3 & 0x3f;\n\n if (!haveByte3) {\n outByte4 = 64;\n\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\n }\n\n return output.join('');\n },\n\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\n encodeString: function encodeString(input, webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return btoa(input);\n }\n\n return this.encodeByteArray(stringToByteArray(input), webSafe);\n },\n\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\n decodeString: function decodeString(input, webSafe) {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return atob(input);\n }\n\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\n },\n\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\n decodeStringToByteArray: function decodeStringToByteArray(input, webSafe) {\n this.init_();\n var charToByteMap = webSafe ? this.charToByteMapWebSafe_ : this.charToByteMap_;\n var output = [];\n\n for (var i = 0; i < input.length;) {\n var byte1 = charToByteMap[input.charAt(i++)];\n var haveByte2 = i < input.length;\n var byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n var haveByte3 = i < input.length;\n var byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n var haveByte4 = i < input.length;\n var byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw Error();\n }\n\n var outByte1 = byte1 << 2 | byte2 >> 4;\n output.push(outByte1);\n\n if (byte3 !== 64) {\n var outByte2 = byte2 << 4 & 0xf0 | byte3 >> 2;\n output.push(outByte2);\n\n if (byte4 !== 64) {\n var outByte3 = byte3 << 6 & 0xc0 | byte4;\n output.push(outByte3);\n }\n }\n }\n\n return output;\n },\n\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\n init_: function init_() {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {}; // We want quick mappings back and forth, so we precompute two maps.\n\n for (var i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i; // Be forgiving when decoding and correctly decode both encodings.\n\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n/**\r\n * URL-safe base64 encoding\r\n */\n\nvar base64Encode = function base64Encode(str) {\n var utf8Bytes = stringToByteArray(str);\n return base64.encodeByteArray(utf8Bytes, true);\n};\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\n\n\nvar base64Decode = function base64Decode(str) {\n try {\n return base64.decodeString(str, true);\n } catch (e) {\n console.error('base64Decode failed: ', e);\n }\n\n return null;\n};\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\n\n\nfunction deepCopy(value) {\n return deepExtend(undefined, value);\n}\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\n\n\nfunction deepExtend(target, source) {\n if (!(source instanceof Object)) {\n return source;\n }\n\n switch (source.constructor) {\n case Date:\n // Treat Dates like scalars; if the target date object had any child\n // properties - they will be lost!\n var dateValue = source;\n return new Date(dateValue.getTime());\n\n case Object:\n if (target === undefined) {\n target = {};\n }\n\n break;\n\n case Array:\n // Always copy the array source and overwrite the target.\n target = [];\n break;\n\n default:\n // Not a plain Object - treat it as a scalar.\n return source;\n }\n\n for (var prop in source) {\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\n continue;\n }\n\n target[prop] = deepExtend(target[prop], source[prop]);\n }\n\n return target;\n}\n\nfunction isValidKey(key) {\n return key !== '__proto__';\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar Deferred =\n/** @class */\nfunction () {\n function Deferred() {\n var _this = this;\n\n this.reject = function () {};\n\n this.resolve = function () {};\n\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n }\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\n\n\n Deferred.prototype.wrapCallback = function (callback) {\n var _this = this;\n\n return function (error, value) {\n if (error) {\n _this.reject(error);\n } else {\n _this.resolve(value);\n }\n\n if (typeof callback === 'function') {\n // Attaching noop handler just in case developer wasn't expecting\n // promises\n _this.promise.catch(function () {}); // Some of our callbacks don't expect a value and our own tests\n // assert that the parameter length is 1\n\n\n if (callback.length === 1) {\n callback(error);\n } else {\n callback(error, value);\n }\n }\n };\n };\n\n return Deferred;\n}();\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\n\n\nfunction getUA() {\n if (typeof navigator !== 'undefined' && typeof navigator['userAgent'] === 'string') {\n return navigator['userAgent'];\n } else {\n return '';\n }\n}\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\n\n\nfunction isMobileCordova() {\n return typeof window !== 'undefined' && // @ts-ignore Setting up an broadly applicable index signature for Window\n // just to deal with this case would probably be a bad idea.\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) && /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA());\n}\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\n// Node detection logic from: https://github.com/iliakan/detect-node/\n\n\nfunction isNode() {\n try {\n return Object.prototype.toString.call(global.process) === '[object process]';\n } catch (e) {\n return false;\n }\n}\n/**\r\n * Detect Browser Environment\r\n */\n\n\nfunction isBrowser() {\n return typeof self === 'object' && self.self === self;\n}\n\nfunction isBrowserExtension() {\n var runtime = typeof chrome === 'object' ? chrome.runtime : typeof browser === 'object' ? browser.runtime : undefined;\n return typeof runtime === 'object' && runtime.id !== undefined;\n}\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\n\n\nfunction isReactNative() {\n return typeof navigator === 'object' && navigator['product'] === 'ReactNative';\n}\n/** Detects Electron apps. */\n\n\nfunction isElectron() {\n return getUA().indexOf('Electron/') >= 0;\n}\n/** Detects Internet Explorer. */\n\n\nfunction isIE() {\n var ua = getUA();\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n}\n/** Detects Universal Windows Platform apps. */\n\n\nfunction isUWP() {\n return getUA().indexOf('MSAppHost/') >= 0;\n}\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\n\n\nfunction isNodeSdk() {\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\n}\n/** Returns true if we are running in Safari. */\n\n\nfunction isSafari() {\n return !isNode() && navigator.userAgent.includes('Safari') && !navigator.userAgent.includes('Chrome');\n}\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\n\n\nfunction isIndexedDBAvailable() {\n return 'indexedDB' in self && indexedDB != null;\n}\n/**\r\n * This method validates browser context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n */\n\n\nfunction validateIndexedDBOpenable() {\n return new Promise(function (resolve, reject) {\n try {\n var preExist_1 = true;\n var DB_CHECK_NAME_1 = 'validate-browser-context-for-indexeddb-analytics-module';\n var request_1 = window.indexedDB.open(DB_CHECK_NAME_1);\n\n request_1.onsuccess = function () {\n request_1.result.close(); // delete database only when it doesn't pre-exist\n\n if (!preExist_1) {\n window.indexedDB.deleteDatabase(DB_CHECK_NAME_1);\n }\n\n resolve(true);\n };\n\n request_1.onupgradeneeded = function () {\n preExist_1 = false;\n };\n\n request_1.onerror = function () {\n var _a;\n\n reject(((_a = request_1.error) === null || _a === void 0 ? void 0 : _a.message) || '');\n };\n } catch (error) {\n reject(error);\n }\n });\n}\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\n\n\nfunction areCookiesEnabled() {\n if (!navigator || !navigator.cookieEnabled) {\n return false;\n }\n\n return true;\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar ERROR_NAME = 'FirebaseError'; // Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\n\nvar FirebaseError =\n/** @class */\nfunction (_super) {\n __extends(FirebaseError, _super);\n\n function FirebaseError(code, message, customData) {\n var _this = _super.call(this, message) || this;\n\n _this.code = code;\n _this.customData = customData;\n _this.name = ERROR_NAME; // Fix For ES5\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n\n Object.setPrototypeOf(_this, FirebaseError.prototype); // Maintains proper stack trace for where our error was thrown.\n // Only available on V8.\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, ErrorFactory.prototype.create);\n }\n\n return _this;\n }\n\n return FirebaseError;\n}(Error);\n\nvar ErrorFactory =\n/** @class */\nfunction () {\n function ErrorFactory(service, serviceName, errors) {\n this.service = service;\n this.serviceName = serviceName;\n this.errors = errors;\n }\n\n ErrorFactory.prototype.create = function (code) {\n var data = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n data[_i - 1] = arguments[_i];\n }\n\n var customData = data[0] || {};\n var fullCode = this.service + \"/\" + code;\n var template = this.errors[code];\n var message = template ? replaceTemplate(template, customData) : 'Error'; // Service Name: Error message (service/code).\n\n var fullMessage = this.serviceName + \": \" + message + \" (\" + fullCode + \").\";\n var error = new FirebaseError(fullCode, fullMessage, customData);\n return error;\n };\n\n return ErrorFactory;\n}();\n\nfunction replaceTemplate(template, data) {\n return template.replace(PATTERN, function (_, key) {\n var value = data[key];\n return value != null ? String(value) : \"<\" + key + \"?>\";\n });\n}\n\nvar PATTERN = /\\{\\$([^}]+)}/g;\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\n\nfunction jsonEval(str) {\n return JSON.parse(str);\n}\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\n\n\nfunction stringify(data) {\n return JSON.stringify(data);\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\n\n\nvar decode = function decode(token) {\n var header = {},\n claims = {},\n data = {},\n signature = '';\n\n try {\n var parts = token.split('.');\n header = jsonEval(base64Decode(parts[0]) || '');\n claims = jsonEval(base64Decode(parts[1]) || '');\n signature = parts[2];\n data = claims['d'] || {};\n delete claims['d'];\n } catch (e) {}\n\n return {\n header: header,\n claims: claims,\n data: data,\n signature: signature\n };\n};\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\n\n\nvar isValidTimestamp = function isValidTimestamp(token) {\n var claims = decode(token).claims;\n var now = Math.floor(new Date().getTime() / 1000);\n var validSince = 0,\n validUntil = 0;\n\n if (typeof claims === 'object') {\n if (claims.hasOwnProperty('nbf')) {\n validSince = claims['nbf'];\n } else if (claims.hasOwnProperty('iat')) {\n validSince = claims['iat'];\n }\n\n if (claims.hasOwnProperty('exp')) {\n validUntil = claims['exp'];\n } else {\n // token will expire after 24h by default\n validUntil = validSince + 86400;\n }\n }\n\n return !!now && !!validSince && !!validUntil && now >= validSince && now <= validUntil;\n};\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\n\n\nvar issuedAtTime = function issuedAtTime(token) {\n var claims = decode(token).claims;\n\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\n return claims['iat'];\n }\n\n return null;\n};\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\n\n\nvar isValidFormat = function isValidFormat(token) {\n var decoded = decode(token),\n claims = decoded.claims;\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\n};\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\n\n\nvar isAdmin = function isAdmin(token) {\n var claims = decode(token).claims;\n return typeof claims === 'object' && claims['admin'] === true;\n};\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction contains(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction safeGet(obj, key) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj[key];\n } else {\n return undefined;\n }\n}\n\nfunction isEmpty(obj) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction map(obj, fn, contextObj) {\n var res = {};\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[key] = fn.call(contextObj, obj[key], key, obj);\n }\n }\n\n return res;\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\n\n\nfunction querystring(querystringParams) {\n var params = [];\n\n var _loop_1 = function _loop_1(key, value) {\n if (Array.isArray(value)) {\n value.forEach(function (arrayVal) {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\n });\n } else {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n };\n\n for (var _i = 0, _a = Object.entries(querystringParams); _i < _a.length; _i++) {\n var _b = _a[_i],\n key = _b[0],\n value = _b[1];\n\n _loop_1(key, value);\n }\n\n return params.length ? '&' + params.join('&') : '';\n}\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\n\n\nfunction querystringDecode(querystring) {\n var obj = {};\n var tokens = querystring.replace(/^\\?/, '').split('&');\n tokens.forEach(function (token) {\n if (token) {\n var _a = token.split('='),\n key = _a[0],\n value = _a[1];\n\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n });\n return obj;\n}\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\n\n\nfunction extractQuerystring(url) {\n var queryStart = url.indexOf('?');\n\n if (!queryStart) {\n return '';\n }\n\n var fragmentStart = url.indexOf('#', queryStart);\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\n\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\n\n\nvar Sha1 =\n/** @class */\nfunction () {\n function Sha1() {\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\n this.chain_ = [];\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\n\n this.buf_ = [];\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\n\n this.W_ = [];\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\n\n this.pad_ = [];\n /**\r\n * @private {number}\r\n */\n\n this.inbuf_ = 0;\n /**\r\n * @private {number}\r\n */\n\n this.total_ = 0;\n this.blockSize = 512 / 8;\n this.pad_[0] = 128;\n\n for (var i = 1; i < this.blockSize; ++i) {\n this.pad_[i] = 0;\n }\n\n this.reset();\n }\n\n Sha1.prototype.reset = function () {\n this.chain_[0] = 0x67452301;\n this.chain_[1] = 0xefcdab89;\n this.chain_[2] = 0x98badcfe;\n this.chain_[3] = 0x10325476;\n this.chain_[4] = 0xc3d2e1f0;\n this.inbuf_ = 0;\n this.total_ = 0;\n };\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\n\n\n Sha1.prototype.compress_ = function (buf, offset) {\n if (!offset) {\n offset = 0;\n }\n\n var W = this.W_; // get 16 big endian words\n\n if (typeof buf === 'string') {\n for (var i = 0; i < 16; i++) {\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\n // have a bug that turns the post-increment ++ operator into pre-increment\n // during JIT compilation. We have code that depends heavily on SHA-1 for\n // correctness and which is affected by this bug, so I've removed all uses\n // of post-increment ++ in which the result value is used. We can revert\n // this change once the Safari bug\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\n // most clients have been updated.\n W[i] = buf.charCodeAt(offset) << 24 | buf.charCodeAt(offset + 1) << 16 | buf.charCodeAt(offset + 2) << 8 | buf.charCodeAt(offset + 3);\n offset += 4;\n }\n } else {\n for (var i = 0; i < 16; i++) {\n W[i] = buf[offset] << 24 | buf[offset + 1] << 16 | buf[offset + 2] << 8 | buf[offset + 3];\n offset += 4;\n }\n } // expand to 80 words\n\n\n for (var i = 16; i < 80; i++) {\n var t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\n W[i] = (t << 1 | t >>> 31) & 0xffffffff;\n }\n\n var a = this.chain_[0];\n var b = this.chain_[1];\n var c = this.chain_[2];\n var d = this.chain_[3];\n var e = this.chain_[4];\n var f, k; // TODO(user): Try to unroll this loop to speed up the computation.\n\n for (var i = 0; i < 80; i++) {\n if (i < 40) {\n if (i < 20) {\n f = d ^ b & (c ^ d);\n k = 0x5a827999;\n } else {\n f = b ^ c ^ d;\n k = 0x6ed9eba1;\n }\n } else {\n if (i < 60) {\n f = b & c | d & (b | c);\n k = 0x8f1bbcdc;\n } else {\n f = b ^ c ^ d;\n k = 0xca62c1d6;\n }\n }\n\n var t = (a << 5 | a >>> 27) + f + e + k + W[i] & 0xffffffff;\n e = d;\n d = c;\n c = (b << 30 | b >>> 2) & 0xffffffff;\n b = a;\n a = t;\n }\n\n this.chain_[0] = this.chain_[0] + a & 0xffffffff;\n this.chain_[1] = this.chain_[1] + b & 0xffffffff;\n this.chain_[2] = this.chain_[2] + c & 0xffffffff;\n this.chain_[3] = this.chain_[3] + d & 0xffffffff;\n this.chain_[4] = this.chain_[4] + e & 0xffffffff;\n };\n\n Sha1.prototype.update = function (bytes, length) {\n // TODO(johnlenz): tighten the function signature and remove this check\n if (bytes == null) {\n return;\n }\n\n if (length === undefined) {\n length = bytes.length;\n }\n\n var lengthMinusBlock = length - this.blockSize;\n var n = 0; // Using local instead of member variables gives ~5% speedup on Firefox 16.\n\n var buf = this.buf_;\n var inbuf = this.inbuf_; // The outer while loop should execute at most twice.\n\n while (n < length) {\n // When we have no data in the block to top up, we can directly process the\n // input buffer (assuming it contains sufficient data). This gives ~25%\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\n // the data is provided in large chunks (or in multiples of 64 bytes).\n if (inbuf === 0) {\n while (n <= lengthMinusBlock) {\n this.compress_(bytes, n);\n n += this.blockSize;\n }\n }\n\n if (typeof bytes === 'string') {\n while (n < length) {\n buf[inbuf] = bytes.charCodeAt(n);\n ++inbuf;\n ++n;\n\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0; // Jump to the outer loop so we use the full-block optimization.\n\n break;\n }\n }\n } else {\n while (n < length) {\n buf[inbuf] = bytes[n];\n ++inbuf;\n ++n;\n\n if (inbuf === this.blockSize) {\n this.compress_(buf);\n inbuf = 0; // Jump to the outer loop so we use the full-block optimization.\n\n break;\n }\n }\n }\n }\n\n this.inbuf_ = inbuf;\n this.total_ += length;\n };\n /** @override */\n\n\n Sha1.prototype.digest = function () {\n var digest = [];\n var totalBits = this.total_ * 8; // Add pad 0x80 0x00*.\n\n if (this.inbuf_ < 56) {\n this.update(this.pad_, 56 - this.inbuf_);\n } else {\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\n } // Add # bits.\n\n\n for (var i = this.blockSize - 1; i >= 56; i--) {\n this.buf_[i] = totalBits & 255;\n totalBits /= 256; // Don't use bit-shifting here!\n }\n\n this.compress_(this.buf_);\n var n = 0;\n\n for (var i = 0; i < 5; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n digest[n] = this.chain_[i] >> j & 255;\n ++n;\n }\n }\n\n return digest;\n };\n\n return Sha1;\n}();\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\n\n\nfunction createSubscribe(executor, onNoObservers) {\n var proxy = new ObserverProxy(executor, onNoObservers);\n return proxy.subscribe.bind(proxy);\n}\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\n\n\nvar ObserverProxy =\n/** @class */\nfunction () {\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\n function ObserverProxy(executor, onNoObservers) {\n var _this = this;\n\n this.observers = [];\n this.unsubscribes = [];\n this.observerCount = 0; // Micro-task scheduling by calling task.then().\n\n this.task = Promise.resolve();\n this.finalized = false;\n this.onNoObservers = onNoObservers; // Call the executor asynchronously so subscribers that are called\n // synchronously after the creation of the subscribe function\n // can still receive the very first value generated in the executor.\n\n this.task.then(function () {\n executor(_this);\n }).catch(function (e) {\n _this.error(e);\n });\n }\n\n ObserverProxy.prototype.next = function (value) {\n this.forEachObserver(function (observer) {\n observer.next(value);\n });\n };\n\n ObserverProxy.prototype.error = function (error) {\n this.forEachObserver(function (observer) {\n observer.error(error);\n });\n this.close(error);\n };\n\n ObserverProxy.prototype.complete = function () {\n this.forEachObserver(function (observer) {\n observer.complete();\n });\n this.close();\n };\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\n\n\n ObserverProxy.prototype.subscribe = function (nextOrObserver, error, complete) {\n var _this = this;\n\n var observer;\n\n if (nextOrObserver === undefined && error === undefined && complete === undefined) {\n throw new Error('Missing Observer.');\n } // Assemble an Observer object when passed as callback functions.\n\n\n if (implementsAnyMethods(nextOrObserver, ['next', 'error', 'complete'])) {\n observer = nextOrObserver;\n } else {\n observer = {\n next: nextOrObserver,\n error: error,\n complete: complete\n };\n }\n\n if (observer.next === undefined) {\n observer.next = noop;\n }\n\n if (observer.error === undefined) {\n observer.error = noop;\n }\n\n if (observer.complete === undefined) {\n observer.complete = noop;\n }\n\n var unsub = this.unsubscribeOne.bind(this, this.observers.length); // Attempt to subscribe to a terminated Observable - we\n // just respond to the Observer with the final error or complete\n // event.\n\n if (this.finalized) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(function () {\n try {\n if (_this.finalError) {\n observer.error(_this.finalError);\n } else {\n observer.complete();\n }\n } catch (e) {// nothing\n }\n\n return;\n });\n }\n\n this.observers.push(observer);\n return unsub;\n }; // Unsubscribe is synchronous - we guarantee that no events are sent to\n // any unsubscribed Observer.\n\n\n ObserverProxy.prototype.unsubscribeOne = function (i) {\n if (this.observers === undefined || this.observers[i] === undefined) {\n return;\n }\n\n delete this.observers[i];\n this.observerCount -= 1;\n\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\n this.onNoObservers(this);\n }\n };\n\n ObserverProxy.prototype.forEachObserver = function (fn) {\n if (this.finalized) {\n // Already closed by previous event....just eat the additional values.\n return;\n } // Since sendOne calls asynchronously - there is no chance that\n // this.observers will become undefined.\n\n\n for (var i = 0; i < this.observers.length; i++) {\n this.sendOne(i, fn);\n }\n }; // Call the Observer via one of it's callback function. We are careful to\n // confirm that the observe has not been unsubscribed since this asynchronous\n // function had been queued.\n\n\n ObserverProxy.prototype.sendOne = function (i, fn) {\n var _this = this; // Execute the callback asynchronously\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n\n this.task.then(function () {\n if (_this.observers !== undefined && _this.observers[i] !== undefined) {\n try {\n fn(_this.observers[i]);\n } catch (e) {\n // Ignore exceptions raised in Observers or missing methods of an\n // Observer.\n // Log error to console. b/31404806\n if (typeof console !== 'undefined' && console.error) {\n console.error(e);\n }\n }\n }\n });\n };\n\n ObserverProxy.prototype.close = function (err) {\n var _this = this;\n\n if (this.finalized) {\n return;\n }\n\n this.finalized = true;\n\n if (err !== undefined) {\n this.finalError = err;\n } // Proxy is no longer needed - garbage collect references\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n\n\n this.task.then(function () {\n _this.observers = undefined;\n _this.onNoObservers = undefined;\n });\n };\n\n return ObserverProxy;\n}();\n/** Turn synchronous function into one called asynchronously. */\n// eslint-disable-next-line @typescript-eslint/ban-types\n\n\nfunction async(fn, onError) {\n return function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n Promise.resolve(true).then(function () {\n fn.apply(void 0, args);\n }).catch(function (error) {\n if (onError) {\n onError(error);\n }\n });\n };\n}\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\n\n\nfunction implementsAnyMethods(obj, methods) {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n for (var _i = 0, methods_1 = methods; _i < methods_1.length; _i++) {\n var method = methods_1[_i];\n\n if (method in obj && typeof obj[method] === 'function') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction noop() {// do nothing\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\n\n\nvar validateArgCount = function validateArgCount(fnName, minCount, maxCount, argCount) {\n var argError;\n\n if (argCount < minCount) {\n argError = 'at least ' + minCount;\n } else if (argCount > maxCount) {\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\n }\n\n if (argError) {\n var error = fnName + ' failed: Was called with ' + argCount + (argCount === 1 ? ' argument.' : ' arguments.') + ' Expects ' + argError + '.';\n throw new Error(error);\n }\n};\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argumentNumber The index of the argument\r\n * @param optional Whether or not the argument is optional\r\n * @return The prefix to add to the error thrown for validation.\r\n */\n\n\nfunction errorPrefix(fnName, argumentNumber, optional) {\n var argName = '';\n\n switch (argumentNumber) {\n case 1:\n argName = optional ? 'first' : 'First';\n break;\n\n case 2:\n argName = optional ? 'second' : 'Second';\n break;\n\n case 3:\n argName = optional ? 'third' : 'Third';\n break;\n\n case 4:\n argName = optional ? 'fourth' : 'Fourth';\n break;\n\n default:\n throw new Error('errorPrefix called with argumentNumber > 4. Need to update it?');\n }\n\n var error = fnName + ' failed: ';\n error += argName + ' argument ';\n return error;\n}\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\n\n\nfunction validateNamespace(fnName, argumentNumber, namespace, optional) {\n if (optional && !namespace) {\n return;\n }\n\n if (typeof namespace !== 'string') {\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\n throw new Error(errorPrefix(fnName, argumentNumber, optional) + 'must be a valid firebase namespace.');\n }\n}\n\nfunction validateCallback(fnName, argumentNumber, // eslint-disable-next-line @typescript-eslint/ban-types\ncallback, optional) {\n if (optional && !callback) {\n return;\n }\n\n if (typeof callback !== 'function') {\n throw new Error(errorPrefix(fnName, argumentNumber, optional) + 'must be a valid function.');\n }\n}\n\nfunction validateContextObject(fnName, argumentNumber, context, optional) {\n if (optional && !context) {\n return;\n }\n\n if (typeof context !== 'object' || context === null) {\n throw new Error(errorPrefix(fnName, argumentNumber, optional) + 'must be a valid context object.');\n }\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\n// so it's been modified.\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\n// pair).\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\n\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\n\n\nvar stringToByteArray$1 = function stringToByteArray$1(str) {\n var out = [];\n var p = 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i); // Is this the lead surrogate in a surrogate pair?\n\n if (c >= 0xd800 && c <= 0xdbff) {\n var high = c - 0xd800; // the high 10 bits.\n\n i++;\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\n var low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\n\n c = 0x10000 + (high << 10) + low;\n }\n\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = c >> 6 | 192;\n out[p++] = c & 63 | 128;\n } else if (c < 65536) {\n out[p++] = c >> 12 | 224;\n out[p++] = c >> 6 & 63 | 128;\n out[p++] = c & 63 | 128;\n } else {\n out[p++] = c >> 18 | 240;\n out[p++] = c >> 12 & 63 | 128;\n out[p++] = c >> 6 & 63 | 128;\n out[p++] = c & 63 | 128;\n }\n }\n\n return out;\n};\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\n\n\nvar stringLength = function stringLength(str) {\n var p = 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n\n if (c < 128) {\n p++;\n } else if (c < 2048) {\n p += 2;\n } else if (c >= 0xd800 && c <= 0xdbff) {\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\n p += 4;\n i++; // skip trail surrogate.\n } else {\n p += 3;\n }\n }\n\n return p;\n};\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\n\n\nvar DEFAULT_INTERVAL_MILLIS = 1000;\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\n\nvar DEFAULT_BACKOFF_FACTOR = 2;\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *

    Visible for testing\r\n */\n\nvar MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\n\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *

    Visible for testing\r\n */\n\nvar RANDOM_FACTOR = 0.5;\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\n\nfunction calculateBackoffMillis(backoffCount, intervalMillis, backoffFactor) {\n if (intervalMillis === void 0) {\n intervalMillis = DEFAULT_INTERVAL_MILLIS;\n }\n\n if (backoffFactor === void 0) {\n backoffFactor = DEFAULT_BACKOFF_FACTOR;\n } // Calculates an exponentially increasing value.\n // Deviation: calculates value from count and a constant interval, so we only need to save value\n // and count to restore state.\n\n\n var currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount); // A random \"fuzz\" to avoid waves of retries.\n // Deviation: randomFactor is required.\n\n var randomWait = Math.round( // A fraction of the backoff value to add/subtract.\n // Deviation: changes multiplication order to improve readability.\n RANDOM_FACTOR * currBaseValue * ( // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\n // if we add or subtract.\n Math.random() - 0.5) * 2); // Limits backoff to max to avoid effectively permanent backoff.\n\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\n}\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Provide English ordinal letters after a number\r\n */\n\n\nfunction ordinal(i) {\n if (!Number.isFinite(i)) {\n return \"\" + i;\n }\n\n return i + indicator(i);\n}\n\nfunction indicator(i) {\n i = Math.abs(i);\n var cent = i % 100;\n\n if (cent >= 10 && cent <= 20) {\n return 'th';\n }\n\n var dec = i % 10;\n\n if (dec === 1) {\n return 'st';\n }\n\n if (dec === 2) {\n return 'nd';\n }\n\n if (dec === 3) {\n return 'rd';\n }\n\n return 'th';\n}\n\nexport { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, calculateBackoffMillis, contains, createSubscribe, decode, deepCopy, deepExtend, errorPrefix, extractQuerystring, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray$1 as stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"@babel/runtime/helpers/esm/arrayWithoutHoles\";\nimport iterableToArray from \"@babel/runtime/helpers/esm/iterableToArray\";\nimport unsupportedIterableToArray from \"@babel/runtime/helpers/esm/unsupportedIterableToArray\";\nimport nonIterableSpread from \"@babel/runtime/helpers/esm/nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import arrayLikeToArray from \"@babel/runtime/helpers/esm/arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","const plugins = require(`./api-runner-browser-plugins`)\nconst {\n getResourcesForPathname,\n getResourcesForPathnameSync,\n getResourceURLsForPathname,\n loadPage,\n loadPageSync,\n} = require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n // Deprecated April 2019. Use `loadPageSync` instead\n args.getResourcesForPathnameSync = getResourcesForPathnameSync\n // Deprecated April 2019. Use `loadPage` instead\n args.getResourcesForPathname = getResourcesForPathname\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\n\n/* global Reflect, Promise */\nvar _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n};\n\nexport { _assign as __assign };\nexport function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n}\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\nexport function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n}\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\nexport function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\nexport var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n};\nexport function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n}\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n}\n/** @deprecated */\n\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\nexport function __spreadArray(to, from) {\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {\n to[j] = from[i];\n }\n\n return to;\n}\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n}\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n}\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n}\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n}\n;\n\nvar __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n} : function (o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n}\nexport function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n}\nexport function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n}","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\nfunction __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nvar _a;\n/**\r\n * A container for all of the Logger instances\r\n */\n\n\nvar instances = [];\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\n\nvar LogLevel;\n\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\n})(LogLevel || (LogLevel = {}));\n\nvar levelStringToEnum = {\n 'debug': LogLevel.DEBUG,\n 'verbose': LogLevel.VERBOSE,\n 'info': LogLevel.INFO,\n 'warn': LogLevel.WARN,\n 'error': LogLevel.ERROR,\n 'silent': LogLevel.SILENT\n};\n/**\r\n * The default log level\r\n */\n\nvar defaultLogLevel = LogLevel.INFO;\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\n\nvar ConsoleMethod = (_a = {}, _a[LogLevel.DEBUG] = 'log', _a[LogLevel.VERBOSE] = 'log', _a[LogLevel.INFO] = 'info', _a[LogLevel.WARN] = 'warn', _a[LogLevel.ERROR] = 'error', _a);\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\n\nvar defaultLogHandler = function defaultLogHandler(instance, logType) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n if (logType < instance.logLevel) {\n return;\n }\n\n var now = new Date().toISOString();\n var method = ConsoleMethod[logType];\n\n if (method) {\n console[method].apply(console, __spreadArrays([\"[\" + now + \"] \" + instance.name + \":\"], args));\n } else {\n throw new Error(\"Attempted to log a message with an invalid logType (value: \" + logType + \")\");\n }\n};\n\nvar Logger =\n/** @class */\nfunction () {\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\n function Logger(name) {\n this.name = name;\n /**\r\n * The log level of the given Logger instance.\r\n */\n\n this._logLevel = defaultLogLevel;\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\n\n this._logHandler = defaultLogHandler;\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\n\n this._userLogHandler = null;\n /**\r\n * Capture the current instance for later use\r\n */\n\n instances.push(this);\n }\n\n Object.defineProperty(Logger.prototype, \"logLevel\", {\n get: function get() {\n return this._logLevel;\n },\n set: function set(val) {\n if (!(val in LogLevel)) {\n throw new TypeError(\"Invalid value \\\"\" + val + \"\\\" assigned to `logLevel`\");\n }\n\n this._logLevel = val;\n },\n enumerable: false,\n configurable: true\n }); // Workaround for setter/getter having to be the same type.\n\n Logger.prototype.setLogLevel = function (val) {\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\n };\n\n Object.defineProperty(Logger.prototype, \"logHandler\", {\n get: function get() {\n return this._logHandler;\n },\n set: function set(val) {\n if (typeof val !== 'function') {\n throw new TypeError('Value assigned to `logHandler` must be a function');\n }\n\n this._logHandler = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Logger.prototype, \"userLogHandler\", {\n get: function get() {\n return this._userLogHandler;\n },\n set: function set(val) {\n this._userLogHandler = val;\n },\n enumerable: false,\n configurable: true\n });\n /**\r\n * The functions below are all based on the `console` interface\r\n */\n\n Logger.prototype.debug = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.DEBUG], args));\n\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.DEBUG], args));\n };\n\n Logger.prototype.log = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.VERBOSE], args));\n\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.VERBOSE], args));\n };\n\n Logger.prototype.info = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.INFO], args));\n\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.INFO], args));\n };\n\n Logger.prototype.warn = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.WARN], args));\n\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.WARN], args));\n };\n\n Logger.prototype.error = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n this._userLogHandler && this._userLogHandler.apply(this, __spreadArrays([this, LogLevel.ERROR], args));\n\n this._logHandler.apply(this, __spreadArrays([this, LogLevel.ERROR], args));\n };\n\n return Logger;\n}();\n\nfunction setLogLevel(level) {\n instances.forEach(function (inst) {\n inst.setLogLevel(level);\n });\n}\n\nfunction setUserLogHandler(logCallback, options) {\n var _loop_1 = function _loop_1(instance) {\n var customLogLevel = null;\n\n if (options && options.level) {\n customLogLevel = levelStringToEnum[options.level];\n }\n\n if (logCallback === null) {\n instance.userLogHandler = null;\n } else {\n instance.userLogHandler = function (instance, level) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n var message = args.map(function (arg) {\n if (arg == null) {\n return null;\n } else if (typeof arg === 'string') {\n return arg;\n } else if (typeof arg === 'number' || typeof arg === 'boolean') {\n return arg.toString();\n } else if (arg instanceof Error) {\n return arg.message;\n } else {\n try {\n return JSON.stringify(arg);\n } catch (ignored) {\n return null;\n }\n }\n }).filter(function (arg) {\n return arg;\n }).join(' ');\n\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\n logCallback({\n level: LogLevel[level].toLowerCase(),\n message: message,\n args: args,\n type: instance.name\n });\n }\n };\n }\n };\n\n for (var _i = 0, instances_1 = instances; _i < instances_1.length; _i++) {\n var instance = instances_1[_i];\n\n _loop_1(instance);\n }\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };","import { __assign } from 'tslib';\nimport { ErrorFactory, deepCopy, contains, deepExtend, createSubscribe, isBrowser, isNode } from '@firebase/util';\nimport { ComponentContainer, Component } from '@firebase/component';\nimport { Logger, setLogLevel, setUserLogHandler } from '@firebase/logger';\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar _a;\n\nvar ERRORS = (_a = {}, _a[\"no-app\"\n/* NO_APP */\n] = \"No Firebase App '{$appName}' has been created - \" + 'call Firebase App.initializeApp()', _a[\"bad-app-name\"\n/* BAD_APP_NAME */\n] = \"Illegal App name: '{$appName}\", _a[\"duplicate-app\"\n/* DUPLICATE_APP */\n] = \"Firebase App named '{$appName}' already exists\", _a[\"app-deleted\"\n/* APP_DELETED */\n] = \"Firebase App named '{$appName}' already deleted\", _a[\"invalid-app-argument\"\n/* INVALID_APP_ARGUMENT */\n] = 'firebase.{$appName}() takes either no argument or a ' + 'Firebase App instance.', _a[\"invalid-log-argument\"\n/* INVALID_LOG_ARGUMENT */\n] = 'First argument to `onLog` must be null or a function.', _a);\nvar ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\nvar name = \"@firebase/app\";\nvar version = \"0.6.16\";\nvar name$1 = \"@firebase/analytics\";\nvar name$2 = \"@firebase/auth\";\nvar name$3 = \"@firebase/database\";\nvar name$4 = \"@firebase/functions\";\nvar name$5 = \"@firebase/installations\";\nvar name$6 = \"@firebase/messaging\";\nvar name$7 = \"@firebase/performance\";\nvar name$8 = \"@firebase/remote-config\";\nvar name$9 = \"@firebase/storage\";\nvar name$a = \"@firebase/firestore\";\nvar name$b = \"firebase-wrapper\";\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar _a$1;\n\nvar DEFAULT_ENTRY_NAME = '[DEFAULT]';\nvar PLATFORM_LOG_STRING = (_a$1 = {}, _a$1[name] = 'fire-core', _a$1[name$1] = 'fire-analytics', _a$1[name$2] = 'fire-auth', _a$1[name$3] = 'fire-rtdb', _a$1[name$4] = 'fire-fn', _a$1[name$5] = 'fire-iid', _a$1[name$6] = 'fire-fcm', _a$1[name$7] = 'fire-perf', _a$1[name$8] = 'fire-rc', _a$1[name$9] = 'fire-gcs', _a$1[name$a] = 'fire-fst', _a$1['fire-js'] = 'fire-js', _a$1[name$b] = 'fire-js-all', _a$1);\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar logger = new Logger('@firebase/app');\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Global context object for a collection of services using\r\n * a shared authentication state.\r\n */\n\nvar FirebaseAppImpl =\n/** @class */\nfunction () {\n function FirebaseAppImpl(options, config, firebase_) {\n var _this = this;\n\n this.firebase_ = firebase_;\n this.isDeleted_ = false;\n this.name_ = config.name;\n this.automaticDataCollectionEnabled_ = config.automaticDataCollectionEnabled || false;\n this.options_ = deepCopy(options);\n this.container = new ComponentContainer(config.name); // add itself to container\n\n this._addComponent(new Component('app', function () {\n return _this;\n }, \"PUBLIC\"\n /* PUBLIC */\n )); // populate ComponentContainer with existing components\n\n\n this.firebase_.INTERNAL.components.forEach(function (component) {\n return _this._addComponent(component);\n });\n }\n\n Object.defineProperty(FirebaseAppImpl.prototype, \"automaticDataCollectionEnabled\", {\n get: function get() {\n this.checkDestroyed_();\n return this.automaticDataCollectionEnabled_;\n },\n set: function set(val) {\n this.checkDestroyed_();\n this.automaticDataCollectionEnabled_ = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FirebaseAppImpl.prototype, \"name\", {\n get: function get() {\n this.checkDestroyed_();\n return this.name_;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FirebaseAppImpl.prototype, \"options\", {\n get: function get() {\n this.checkDestroyed_();\n return this.options_;\n },\n enumerable: false,\n configurable: true\n });\n\n FirebaseAppImpl.prototype.delete = function () {\n var _this = this;\n\n return new Promise(function (resolve) {\n _this.checkDestroyed_();\n\n resolve();\n }).then(function () {\n _this.firebase_.INTERNAL.removeApp(_this.name_);\n\n return Promise.all(_this.container.getProviders().map(function (provider) {\n return provider.delete();\n }));\n }).then(function () {\n _this.isDeleted_ = true;\n });\n };\n /**\r\n * Return a service instance associated with this app (creating it\r\n * on demand), identified by the passed instanceIdentifier.\r\n *\r\n * NOTE: Currently storage and functions are the only ones that are leveraging this\r\n * functionality. They invoke it by calling:\r\n *\r\n * ```javascript\r\n * firebase.app().storage('STORAGE BUCKET ID')\r\n * ```\r\n *\r\n * The service name is passed to this already\r\n * @internal\r\n */\n\n\n FirebaseAppImpl.prototype._getService = function (name, instanceIdentifier) {\n if (instanceIdentifier === void 0) {\n instanceIdentifier = DEFAULT_ENTRY_NAME;\n }\n\n this.checkDestroyed_(); // getImmediate will always succeed because _getService is only called for registered components.\n\n return this.container.getProvider(name).getImmediate({\n identifier: instanceIdentifier\n });\n };\n /**\r\n * Remove a service instance from the cache, so we will create a new instance for this service\r\n * when people try to get this service again.\r\n *\r\n * NOTE: currently only firestore is using this functionality to support firestore shutdown.\r\n *\r\n * @param name The service name\r\n * @param instanceIdentifier instance identifier in case multiple instances are allowed\r\n * @internal\r\n */\n\n\n FirebaseAppImpl.prototype._removeServiceInstance = function (name, instanceIdentifier) {\n if (instanceIdentifier === void 0) {\n instanceIdentifier = DEFAULT_ENTRY_NAME;\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n this.container.getProvider(name).clearInstance(instanceIdentifier);\n };\n /**\r\n * @param component the component being added to this app's container\r\n */\n\n\n FirebaseAppImpl.prototype._addComponent = function (component) {\n try {\n this.container.addComponent(component);\n } catch (e) {\n logger.debug(\"Component \" + component.name + \" failed to register with FirebaseApp \" + this.name, e);\n }\n };\n\n FirebaseAppImpl.prototype._addOrOverwriteComponent = function (component) {\n this.container.addOrOverwriteComponent(component);\n };\n\n FirebaseAppImpl.prototype.toJSON = function () {\n return {\n name: this.name,\n automaticDataCollectionEnabled: this.automaticDataCollectionEnabled,\n options: this.options\n };\n };\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\n\n\n FirebaseAppImpl.prototype.checkDestroyed_ = function () {\n if (this.isDeleted_) {\n throw ERROR_FACTORY.create(\"app-deleted\"\n /* APP_DELETED */\n , {\n appName: this.name_\n });\n }\n };\n\n return FirebaseAppImpl;\n}(); // Prevent dead-code elimination of these methods w/o invalid property\n// copying.\n\n\nFirebaseAppImpl.prototype.name && FirebaseAppImpl.prototype.options || FirebaseAppImpl.prototype.delete || console.log('dc');\nvar version$1 = \"8.3.0\";\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Because auth can't share code with other components, we attach the utility functions\r\n * in an internal namespace to share code.\r\n * This function return a firebase namespace object without\r\n * any utility functions, so it can be shared between the regular firebaseNamespace and\r\n * the lite version.\r\n */\n\nfunction createFirebaseNamespaceCore(firebaseAppImpl) {\n var apps = {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n var components = new Map(); // A namespace is a plain JavaScript Object.\n\n var namespace = {\n // Hack to prevent Babel from modifying the object returned\n // as the firebase namespace.\n // @ts-ignore\n __esModule: true,\n initializeApp: initializeApp,\n // @ts-ignore\n app: app,\n registerVersion: registerVersion,\n setLogLevel: setLogLevel,\n onLog: onLog,\n // @ts-ignore\n apps: null,\n SDK_VERSION: version$1,\n INTERNAL: {\n registerComponent: registerComponent,\n removeApp: removeApp,\n components: components,\n useAsService: useAsService\n }\n }; // Inject a circular default export to allow Babel users who were previously\n // using:\n //\n // import firebase from 'firebase';\n // which becomes: var firebase = require('firebase').default;\n //\n // instead of\n //\n // import * as firebase from 'firebase';\n // which becomes: var firebase = require('firebase');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n namespace['default'] = namespace; // firebase.apps is a read-only getter.\n\n Object.defineProperty(namespace, 'apps', {\n get: getApps\n });\n /**\r\n * Called by App.delete() - but before any services associated with the App\r\n * are deleted.\r\n */\n\n function removeApp(name) {\n delete apps[name];\n }\n /**\r\n * Get the App object for a given name (or DEFAULT).\r\n */\n\n\n function app(name) {\n name = name || DEFAULT_ENTRY_NAME;\n\n if (!contains(apps, name)) {\n throw ERROR_FACTORY.create(\"no-app\"\n /* NO_APP */\n , {\n appName: name\n });\n }\n\n return apps[name];\n } // @ts-ignore\n\n\n app['App'] = firebaseAppImpl;\n\n function initializeApp(options, rawConfig) {\n if (rawConfig === void 0) {\n rawConfig = {};\n }\n\n if (typeof rawConfig !== 'object' || rawConfig === null) {\n var name_1 = rawConfig;\n rawConfig = {\n name: name_1\n };\n }\n\n var config = rawConfig;\n\n if (config.name === undefined) {\n config.name = DEFAULT_ENTRY_NAME;\n }\n\n var name = config.name;\n\n if (typeof name !== 'string' || !name) {\n throw ERROR_FACTORY.create(\"bad-app-name\"\n /* BAD_APP_NAME */\n , {\n appName: String(name)\n });\n }\n\n if (contains(apps, name)) {\n throw ERROR_FACTORY.create(\"duplicate-app\"\n /* DUPLICATE_APP */\n , {\n appName: name\n });\n }\n\n var app = new firebaseAppImpl(options, config, namespace);\n apps[name] = app;\n return app;\n }\n /*\r\n * Return an array of all the non-deleted FirebaseApps.\r\n */\n\n\n function getApps() {\n // Make a copy so caller cannot mutate the apps list.\n return Object.keys(apps).map(function (name) {\n return apps[name];\n });\n }\n\n function registerComponent(component) {\n var componentName = component.name;\n\n if (components.has(componentName)) {\n logger.debug(\"There were multiple attempts to register component \" + componentName + \".\");\n return component.type === \"PUBLIC\"\n /* PUBLIC */\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namespace[componentName] : null;\n }\n\n components.set(componentName, component); // create service namespace for public components\n\n if (component.type === \"PUBLIC\"\n /* PUBLIC */\n ) {\n // The Service namespace is an accessor function ...\n var serviceNamespace = function serviceNamespace(appArg) {\n if (appArg === void 0) {\n appArg = app();\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n if (typeof appArg[componentName] !== 'function') {\n // Invalid argument.\n // This happens in the following case: firebase.storage('gs:/')\n throw ERROR_FACTORY.create(\"invalid-app-argument\"\n /* INVALID_APP_ARGUMENT */\n , {\n appName: componentName\n });\n } // Forward service instance lookup to the FirebaseApp.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n return appArg[componentName]();\n }; // ... and a container for service-level properties.\n\n\n if (component.serviceProps !== undefined) {\n deepExtend(serviceNamespace, component.serviceProps);\n } // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n namespace[componentName] = serviceNamespace; // Patch the FirebaseAppImpl prototype\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n firebaseAppImpl.prototype[componentName] = // TODO: The eslint disable can be removed and the 'ignoreRestArgs'\n // option added to the no-explicit-any rule when ESlint releases it.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var serviceFxn = this._getService.bind(this, componentName);\n\n return serviceFxn.apply(this, component.multipleInstances ? args : []);\n };\n } // add the component to existing app instances\n\n\n for (var _i = 0, _a = Object.keys(apps); _i < _a.length; _i++) {\n var appName = _a[_i];\n\n apps[appName]._addComponent(component);\n }\n\n return component.type === \"PUBLIC\"\n /* PUBLIC */\n ? // eslint-disable-next-line @typescript-eslint/no-explicit-any\n namespace[componentName] : null;\n }\n\n function registerVersion(libraryKeyOrName, version, variant) {\n var _a; // TODO: We can use this check to whitelist strings when/if we set up\n // a good whitelist system.\n\n\n var library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\n\n if (variant) {\n library += \"-\" + variant;\n }\n\n var libraryMismatch = library.match(/\\s|\\//);\n var versionMismatch = version.match(/\\s|\\//);\n\n if (libraryMismatch || versionMismatch) {\n var warning = [\"Unable to register library \\\"\" + library + \"\\\" with version \\\"\" + version + \"\\\":\"];\n\n if (libraryMismatch) {\n warning.push(\"library name \\\"\" + library + \"\\\" contains illegal characters (whitespace or \\\"/\\\")\");\n }\n\n if (libraryMismatch && versionMismatch) {\n warning.push('and');\n }\n\n if (versionMismatch) {\n warning.push(\"version name \\\"\" + version + \"\\\" contains illegal characters (whitespace or \\\"/\\\")\");\n }\n\n logger.warn(warning.join(' '));\n return;\n }\n\n registerComponent(new Component(library + \"-version\", function () {\n return {\n library: library,\n version: version\n };\n }, \"VERSION\"\n /* VERSION */\n ));\n }\n\n function onLog(logCallback, options) {\n if (logCallback !== null && typeof logCallback !== 'function') {\n throw ERROR_FACTORY.create(\"invalid-log-argument\"\n /* INVALID_LOG_ARGUMENT */\n );\n }\n\n setUserLogHandler(logCallback, options);\n } // Map the requested service to a registered service name\n // (used to map auth to serverAuth service when needed).\n\n\n function useAsService(app, name) {\n if (name === 'serverAuth') {\n return null;\n }\n\n var useService = name;\n return useService;\n }\n\n return namespace;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n/**\r\n * Return a firebase namespace object.\r\n *\r\n * In production, this will be called exactly once and the result\r\n * assigned to the 'firebase' global. It may be called multiple times\r\n * in unit tests.\r\n */\n\n\nfunction createFirebaseNamespace() {\n var namespace = createFirebaseNamespaceCore(FirebaseAppImpl);\n namespace.INTERNAL = __assign(__assign({}, namespace.INTERNAL), {\n createFirebaseNamespace: createFirebaseNamespace,\n extendNamespace: extendNamespace,\n createSubscribe: createSubscribe,\n ErrorFactory: ErrorFactory,\n deepExtend: deepExtend\n });\n /**\r\n * Patch the top-level firebase namespace with additional properties.\r\n *\r\n * firebase.INTERNAL.extendNamespace()\r\n */\n\n function extendNamespace(props) {\n deepExtend(namespace, props);\n }\n\n return namespace;\n}\n\nvar firebase = createFirebaseNamespace();\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\nvar PlatformLoggerService =\n/** @class */\nfunction () {\n function PlatformLoggerService(container) {\n this.container = container;\n } // In initial implementation, this will be called by installations on\n // auth token refresh, and installations will send this string.\n\n\n PlatformLoggerService.prototype.getPlatformInfoString = function () {\n var providers = this.container.getProviders(); // Loop through providers and get library/version pairs from any that are\n // version components.\n\n return providers.map(function (provider) {\n if (isVersionServiceProvider(provider)) {\n var service = provider.getImmediate();\n return service.library + \"/\" + service.version;\n } else {\n return null;\n }\n }).filter(function (logString) {\n return logString;\n }).join(' ');\n };\n\n return PlatformLoggerService;\n}();\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\n\n\nfunction isVersionServiceProvider(provider) {\n var component = provider.getComponent();\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\"\n /* VERSION */\n ;\n}\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n\n\nfunction registerCoreComponents(firebase, variant) {\n firebase.INTERNAL.registerComponent(new Component('platform-logger', function (container) {\n return new PlatformLoggerService(container);\n }, \"PRIVATE\"\n /* PRIVATE */\n )); // Register `app` package.\n\n firebase.registerVersion(name, version, variant); // Register platform SDK identifier (no version).\n\n firebase.registerVersion('fire-js', '');\n}\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\n// Firebase Lite detection test\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\nif (isBrowser() && self.firebase !== undefined) {\n logger.warn(\"\\n Warning: Firebase is already defined in the global scope. Please make sure\\n Firebase library is only loaded once.\\n \"); // eslint-disable-next-line\n\n var sdkVersion = self.firebase.SDK_VERSION;\n\n if (sdkVersion && sdkVersion.indexOf('LITE') >= 0) {\n logger.warn(\"\\n Warning: You are trying to load Firebase while using Firebase Performance standalone script.\\n You should load Firebase Performance with this instance of Firebase to avoid loading duplicate code.\\n \");\n }\n}\n\nvar initializeApp = firebase.initializeApp; // TODO: This disable can be removed and the 'ignoreRestArgs' option added to\n// the no-explicit-any rule when ESlint releases it.\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\nfirebase.initializeApp = function () {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n } // Environment check before initializing app\n // Do the check in initializeApp, so people have a chance to disable it by setting logLevel\n // in @firebase/logger\n\n\n if (isNode()) {\n logger.warn(\"\\n Warning: This is a browser-targeted Firebase bundle but it appears it is being\\n run in a Node environment. If running in a Node environment, make sure you\\n are using the bundle specified by the \\\"main\\\" field in package.json.\\n \\n If you are using Webpack, you can specify \\\"main\\\" as the first item in\\n \\\"resolve.mainFields\\\":\\n https://webpack.js.org/configuration/resolve/#resolvemainfields\\n \\n If using Rollup, use the @rollup/plugin-node-resolve plugin and specify \\\"main\\\"\\n as the first item in \\\"mainFields\\\", e.g. ['main', 'module'].\\n https://github.com/rollup/@rollup/plugin-node-resolve\\n \");\n }\n\n return initializeApp.apply(undefined, args);\n};\n\nvar firebase$1 = firebase;\nregisterCoreComponents(firebase$1);\nexport default firebase$1;\nexport { firebase$1 as firebase };"],"sourceRoot":""}