{"version":3,"sources":["webpack:///./node_modules/gatsby-link/index.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/gatsby-react-router-scroll/session-storage.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack:///./node_modules/core-js/internals/global.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/mitt/dist/mitt.es.js","webpack:///./.cache/emitter.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/gatsby-react-router-scroll/index.js","webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./.cache/react-lifecycles-compat.js","webpack:///./node_modules/@reach/router/es/lib/history.js","webpack:///./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack:///./node_modules/gatsby-plugin-lunr/common.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./.cache/page-renderer.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/@reach/router/es/lib/utils.js","webpack:///./.cache/api-runner-browser-plugins.js","webpack:///./node_modules/lunr/lunr.js","webpack:///./node_modules/@mikaelkristiansson/domready/ready.js","webpack:///./node_modules/@babel/runtime/helpers/objectSpread.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./.cache/register-service-worker.js","webpack:///./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/has.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:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/gatsby-plugin-lunr/gatsby-browser.js","webpack:///./.cache/gatsby-browser-entry.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/engine-is-node.js","webpack:///./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack:///./node_modules/@reach/router/es/index.js","webpack:///./node_modules/lunr-languages/lunr.stemmer.support.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/gatsby-plugin-gtag/gatsby-browser.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./.cache/strip-prefix.js","webpack:///./node_modules/gatsby-link/parse-path.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./.cache/prefetch.js","webpack:///./.cache/loader.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/lunr-languages sync ^\\.\\/lunr\\..*$","webpack:///./node_modules/gatsby-remark-autolink-headers/gatsby-browser.js","webpack:///./node_modules/gatsby-react-router-scroll/scroll-container.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/@babel/runtime/helpers/defineProperty.js","webpack:///./.cache/public-page-renderer.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack:///./.cache/create-react-context.js","webpack:///./node_modules/gatsby-remark-images/constants.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/gatsby-remark-images/gatsby-browser.js","webpack:///./node_modules/core-js/internals/array-method-uses-to-length.js","webpack:///./.cache/public-page-renderer-prod.js","webpack:///./node_modules/lunr-languages/tinyseg.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./.cache/api-runner-browser.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/set-global.js"],"names":["_interopRequireDefault","exports","__esModule","withPrefix","withAssetPrefix","path","getGlobalPathPrefix","navigateTo","replace","push","navigate","default","_objectWithoutPropertiesLoose2","_extends2","_assertThisInitialized2","_inheritsLoose2","_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","GatsbyLink","_React$Component","props","_this","call","this","defaultGetProps","_ref2","isPartiallyCurrent","isCurrent","className","filter","Boolean","join","style","IOSupported","window","IntersectionObserver","state","handleRef","bind","_proto","prototype","componentDidUpdate","prevProps","prevState","to","___loader","enqueue","location","pathname","componentDidMount","componentWillUnmount","io","_this$io","instance","el","unobserve","disconnect","ref","cb","_this2","innerRef","hasOwnProperty","entries","forEach","entry","target","isIntersecting","intersectionRatio","observe","render","_this3","_this$props","_this$props$getProps","getProps","_onClick","onClick","_onMouseEnter","onMouseEnter","rest","createElement","Location","_ref3","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","IndexedObject","requireObjectCoercible","module","it","SessionStorage","read","key","stateKey","getStateKey","value","sessionStorage","getItem","JSON","parse","save","storedValue","stringify","setItem","stateKeyBase","exec","error","global","aFunction","variable","undefined","namespace","method","arguments","length","nativePropertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","Object","NASHORN_BUG","1","f","V","descriptor","enumerable","toObject","toLength","createMethod","IS_RIGHT","that","callbackfn","argumentsLength","memo","O","self","index","i","TypeError","left","right","_typeof","_getRequireWildcardCache","WeakMap","cache","obj","has","get","newObj","hasPropertyDescriptor","defineProperty","desc","set","Math","check","globalThis","Function","charAt","pathCache","Map","matchPaths","trimPathname","rawPathname","decodeURIComponent","stripPrefix","__BASE_PATH__","split","URL","setMatchPaths","findMatchPath","trimmedPathname","cleanPath","pickPaths","map","matchPath","originalPath","pick","normalizePagePath","route","grabMatchParams","params","findPath","foundPath","useScrollRestoration","identifier","useLocation","useContext","_scrollHandler","ScrollContext","useRef","useLayoutEffect","position","scrollTo","onScroll","scrollTop","emitter","all","create","on","type","handler","off","splice","indexOf","emit","evt","mitt","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","source","keys","ScrollContainer","ScrollHandler","_scrollContainer","_useScrollRestoration","excluded","sourceKeys","shared","uid","polyfill","_extends","assign","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","Promise","res","createMemorySource","initialPath","searchIndex","initialLocation","substr","stack","states","name","_","uri","_uri$split","_uri$split$","_uri$split2","_uri$split2$","newIndex","document","globalHistory","localizedManifests","Array","isArray","localizedManifest","find","app","start_url","lang","DESCRIPTORS","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPrimitive","IE8_DOM_DEFINE","nativeGetOwnPropertyDescriptor","P","fails","a","$","$reduce","arrayMethodIsStrict","arrayMethodUsesToLength","CHROME_VERSION","IS_NODE","STRICT_METHOD","USES_TO_LENGTH","proto","forced","reduce","_interopRequireWildcard","React","_sessionStorage","createContext","displayName","_len","args","_key","apply","concat","_stateStorage","scrollListener","scrollY","windowScroll","shouldUpdateScroll","scrollToHash","node","getElementById","substring","scrollIntoView","prevRouterProps","routerProps","scrollPosition","_this$props$location","_this$props$location2","Provider","children","element","enhanceLunr","lunr","lngs","require","log","String","createNonEnumerableProperty","redefine","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","toInteger","max","min","integer","PageRenderer","pageResources","json","pageContext","__params","pathContext","pageElement","apiRunner","loader","publicLoader","component","page","result","pop","internalObjectKeys","hiddenKeys","getOwnPropertyNames","match","userAgent","process","versions","v8","routes","default_","uriPathname","uriSegments","segmentize","isRootUri","ranked","rankRoutes","l","missed","routeSegments","routeSegment","uriSegment","isSplat","dynamicMatch","paramRe","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","from","isDynamic","sort","test","rankRoute","score","isRootSegment","SEGMENT_POINTS","b","q","shallowCompare","obj1","obj2","obj1Keys","every","plugin","step2list","step3list","v","C","re_mgr0","re_mgr1","re_meq1","re_s_v","re_1a","re2_1a","re_1b","re2_1b","re_1b_2","re2_1b_2","re3_1b_2","re4_1b_2","re_1c","re_2","re_3","re_4","re2_4","re_5","re_5_1","re3_5","porterStemmer","config","builder","Builder","pipeline","add","trimmer","stopWordFilter","stemmer","searchPipeline","build","utils","message","asString","toString","clone","val","FieldRef","docRef","fieldName","stringValue","_stringValue","joiner","fromString","s","n","fieldRef","Set","elements","complete","intersect","other","union","contains","empty","intersection","idf","posting","documentCount","documentsWithTerm","x","abs","Token","str","metadata","update","tokenizer","t","toLowerCase","len","tokens","sliceEnd","sliceStart","sliceLength","separator","tokenMetadata","Pipeline","_stack","registeredFunctions","registerFunction","label","warnIfFunctionNotRegistered","load","serialised","fnName","Error","fns","after","existingFn","newFn","pos","before","remove","run","stackLength","j","k","runString","token","reset","toJSON","Vector","_magnitude","positionForIndex","start","end","pivotPoint","floor","pivotIndex","insert","insertIdx","upsert","magnitude","sumOfSquares","elementsLength","sqrt","dot","otherVector","dotProduct","aLen","bLen","aVal","bVal","similarity","toArray","output","c","RegExp","w","stem","suffix","firstch","re","re2","re3","re4","toUpperCase","fp","generateStopWordFilter","stopWords","words","stopWord","TokenSet","final","edges","id","_nextId","fromArray","arr","finish","root","fromClause","clause","fromFuzzyString","term","editDistance","editsRemaining","frame","noEditNode","char","insertionNode","substitutionNode","transposeNode","charA","charB","next","edge","_str","labels","qNode","qEdges","qLen","nEdges","nLen","qEdge","nEdge","previousWord","uncheckedNodes","minimizedNodes","word","commonPrefix","minimize","child","nextNode","parent","downTo","childKey","Index","attrs","invertedIndex","fieldVectors","tokenSet","fields","queryString","QueryParser","Query","matchingFields","queryVectors","termFieldCache","requiredMatches","prohibitedMatches","clauses","terms","clauseMatches","usePipeline","m","termTokenSet","expandedTerms","presence","REQUIRED","field","expandedTerm","termIndex","_index","fieldPosting","matchingDocumentRefs","termField","matchingDocumentsSet","PROHIBITED","boost","fieldMatch","matchingDocumentRef","matchingFieldRef","MatchData","allRequiredMatches","allProhibitedMatches","matchingFieldRefs","results","matches","isNegated","docMatch","fieldVector","matchData","combine","serializedIndex","serializedVectors","serializedInvertedIndex","tokenSetBuilder","tuple","_fields","_documents","fieldTermFrequencies","fieldLengths","_b","_k1","metadataWhitelist","attributes","RangeError","number","k1","doc","extractor","fieldTerms","metadataKey","calculateAverageFieldLengths","fieldRefs","numberOfFields","accumulator","documentsWithField","averageFieldLength","createFieldVectors","fieldRefsLength","termIdfCache","fieldLength","termFrequencies","termsLength","fieldBoost","docBoost","scoreWithPrecision","tf","round","createTokenSet","use","unshift","clonedMetadata","metadataKeys","otherMatchData","allFields","wildcard","NONE","LEADING","TRAILING","OPTIONAL","QueryParseError","QueryLexer","lexemes","escapeCharPositions","lexText","sliceString","subSlices","escapeCharacter","EOS","width","ignore","backup","acceptDigitRun","charCode","charCodeAt","more","FIELD","TERM","EDIT_DISTANCE","BOOST","PRESENCE","lexField","lexer","lexTerm","lexEditDistance","lexBoost","lexEOS","termSeparator","currentClause","lexemeIdx","parseClause","peekLexeme","consumeLexeme","lexeme","nextClause","completedClause","parser","parsePresence","parseField","parseTerm","errorMessage","nextLexeme","possibleFields","parseEditDistance","parseBoost","parseInt","isNaN","ie10","navigator","appVersion","hack","documentElement","doScroll","loaded","readyState","shift","setTimeout","definition","getOwnPropertySymbols","sym","getBuiltIn","serviceWorker","register","then","reg","installingWorker","installing","controller","___swUpdated","___failedResources","reload","catch","components","ReferenceError","condition","format","d","argIndex","framesToPop","classof","toAbsoluteIndex","IS_INCLUDES","$this","fromIndex","includes","argument","RouteAnnouncerProps","top","height","padding","overflow","clip","whiteSpace","border","redirectMap","redirects","redirect","fromPath","maybeRedirect","toPath","onPreRouteUpdate","prevLocation","onRouteUpdate","timeoutId","loadPage","status","PageResourceStatus","clearTimeout","webpackCompilationHash","___webpackCompilationHash","postMessage","gatsbyApi","reachNavigate","getSavedScrollPosition","RouteAnnouncer","announcementRef","createRef","nextProps","requestAnimationFrame","pageName","title","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","subClass","superClass","constructor","__proto__","IS_PURE","store","mode","copyright","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","anObject","_objectSpread2","onClientEntry","languages","filename","fetchOptions","__LUNR__","__loaded","fetch","response","fullIndex","prev","prefetchPathname","StaticQueryContext","StaticQueryDataRenderer","staticQueryData","data","combinedStaticQueryData","GATSBY_EXPERIMENTAL_LAZY_DEVJS","finalData","StaticQuery","useStaticQuery","context","Number","queryNotFound","graphql","bitmap","configurable","writable","_objectWithoutProperties","_classCallCheck","Constructor","_possibleConstructorReturn","_inherits","setPrototypeOf","createNamedContext","defaultValue","Ctx","LocationContext","LocationProvider","_temp","getContext","refs","unlisten","_props$history","componentDidCatch","info","isRedirect","_navigate","unmounted","defaultProps","ServerLocation","url","BaseContext","Router","baseContext","locationContext","RouterImpl","_React$PureComponent","_props","_navigate2","primary","_props$component","domProps","Children","array","createRoute","cloneElement","FocusWrapper","FocusHandler","wrapperProps","PureComponent","FocusContext","requestFocus","FocusHandlerImpl","initialRender","focusHandlerCount","_React$Component2","_temp2","_this4","_len2","_key2","shouldFocus","focus","myURIChanged","navigatedUpToMe","activeElement","_this5","_props2","_props2$component","Comp","outline","tabIndex","_ref4","_ref5","_ref6","_props$getProps","anchorProps","encodedHref","event","shouldNavigate","_location$state","restState","RedirectRequest","o","redirectTo","RedirectImpl","_React$Component3","_props3","_props3$replace","noThrow","resolvedTo","_props4","Redirect","_ref7","Match","_ref8","_ref9","_ref10","resolvedPath","useNavigate","useParams","useMatch","stripSlashes","elementPath","stemmerSupport","Among","substring_i","toCharArray","sLength","charArr","s_size","SnowballProgram","bra","ket","limit","cursor","limit_backward","setCurrent","getCurrent","in_grouping","ch","in_grouping_b","out_grouping","out_grouping_b","eq_s","eq_s_b","find_among","v_size","common_i","common_j","first_key_inspected","diff","common","i2","find_among_b","lb","replace_s","c_bra","c_ket","adjustment","slice_check","slice_from","slice_del","slice_to","eq_v_b","trimmerSupport","generateTrimmer","wordCharacters","startRegex","endRegex","NATIVE_WEAK_MAP","isObject","objectHas","sharedKey","wmget","wmhas","wmset","facade","STATE","enforce","getterFor","TYPE","trackingId","GATSBY_GTAG_PLUGIN_GA_TRACKING_ID","anonymize","GATSBY_GTAG_PLUGIN_ANONYMIZE","gtag","locationStr","anonymizeObj","anonymize_ip","page_path","inspectSource","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","Symbol","iterator","hashIndex","_inheritsLoose","_arrayLikeToArray","arr2","_toConsumableArray","iter","minLen","supportedPrefetchStrategy","feature","fakeLink","relList","supports","err","support","reject","link","setAttribute","onload","onerror","getElementsByTagName","getElementsByName","parentNode","appendChild","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","delete","prefetchDisabled","some","fetchPageDataJson","loadObj","retries","responseText","jsonPayload","payload","notFound","loadPageDataJson","loadAppData","allData","finalResult","componentChunkPromise","createdAt","staticQueryBatchPromise","staticQueryHash","staticQueryResultsMap","shouldPrefetch","connection","effectiveType","saveData","doesConnectionSupportPrefetch","realPath","doPrefetch","pageDataUrl","prefetchHelper","crossOrigin","as","getResourceURLsForPathname","createComponentUrls","isPageNotFound","appData","___chunkMapping","chunk","__PATH_PREFIX__","chunkName","componentUrls","_loader","getResourcesForPathname","getResourcesForPathnameSync","webpackContext","webpackContextResolve","__webpack_require__","code","offsetY","getTargetOffset","pageYOffset","body","clientTop","computedStyles","getComputedStyle","scrollMarginTop","getPropertyValue","getBoundingClientRect","onInitialClientRender","pluginOptions","offset","_reactDom","scrollKey","ScrollContainerImplementation","findDOMNode","functionToString","postfix","random","replacement","detection","normalize","POLYFILL","NATIVE","nativeDefineProperty","Attributes","DEFAULT_OPTIONS","maxWidth","wrapperStyle","backgroundColor","linkImagesToOriginal","showCaptions","markdownCaptions","withWebp","tracedSVG","loading","disableBgImageOnAlpha","disableBgImage","EMPTY_ALT","imageClass","imageWrapperClass","imageBackgroundClass","METHOD_NAME","ceil","_require","apiCallbackContext","imageWrappers","_loop","imageWrapper","backgroundElement","querySelector","imageElement","onImageLoad","onImageComplete","opacity","color","boxShadow","thrower","ACCESSORS","argument0","argument1","ProdPageRenderer","InternalPageRenderer","TinySegmenter","patterns","chartype_","regexp","BIAS__","BC1__","BC2__","BC3__","BP1__","BP2__","BQ1__","BQ2__","BQ3__","BQ4__","BW1__","BW2__","BW3__","TC1__","TC2__","TC3__","TC4__","TQ1__","TQ2__","TQ3__","TQ4__","TW1__","TW2__","TW3__","TW4__","UC1__","UC2__","UC3__","UC4__","UC5__","UC6__","UP1__","UP2__","UP3__","UQ1__","UQ2__","UQ3__","UW1__","UW2__","UW3__","UW4__","UW5__","UW6__","ctype_","ts_","input","seg","ctype","p1","p2","p3","w1","w2","w3","w4","w5","w6","c1","c2","c3","c4","c5","c6","p","PREFERRED_STRING","valueOf","plugins","api","defaultReturn","argTransform","previous","g","names","EXISTS"],"mappings":"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N,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,IACP,KAAM,KACN,KAAM,IACN,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,IACP,KAAM,MAER9uC,KAAK+uC,MAAQ,CACX,MAAO,MACP,IAAO,IACP,MAAO,KACP,MAAO,MACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,IACP,MAAO,KACP,KAAM,KACN,KAAM,IACN,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,MACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,KAAM,KACN,KAAM,IACN,KAAM,IACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,IACP,KAAM,KACN,MAAO,IACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,IACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,MACP,MAAO,KACP,MAAO,MACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,KAAM,KACN,MAAO,MACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,MACP,KAAM,IACN,MAAO,KACP,KAAM,IACN,MAAO,KACP,KAAM,IACN,MAAO,KACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,MAAO,KACP,KAAM,IACN,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,KAAM,KACN,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,MAAO,KAET/uC,KAAKgvC,MAAQ,CACX,MAAO,KACP,KAAM,IACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,IACP,MAAO,KACP,MAAO,IACP,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,MAAO,IACP,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,IACP,KAAM,IACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,MAAO,IACP,KAAM,IACN,MAAO,KACP,MAAO,IACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,MAAO,KACP,KAAM,KACN,KAAM,IACN,MAAO,KACP,KAAM,KACN,KAAM,KACN,MAAO,IACP,KAAM,KACN,MAAO,KACP,MAAO,KACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,IACP,MAAO,IACP,MAAO,IACP,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,MAAO,KACP,KAAM,KACN,MAAO,IACP,KAAM,KACN,KAAM,K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KAAM,IACN,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KAEP1wC,KAAK2wC,MAAQ,CACX,IAAK,KACL,GAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,KAAM,KACN,KAAM,IACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KAEP3wC,KAAK4wC,MAAQ,CACX,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,MACL,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,MACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,KAAM,MACN,IAAK,KACL,IAAK,KACL,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,KAAM,MAER5wC,KAAK6wC,MAAQ,CACX,IAAK,IACL,KAAM,IACN,GAAM,IACN,IAAO,MACP,KAAM,KACN,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,KACN,IAAK,KACL,IAAK,GACL,IAAK,IACL,KAAM,GACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,KAAM,IACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,IAAK,IACL,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,IACL,IAAK,IACL,KAAM,IACN,KAAM,IACN,IAAK,IACL,KAAM,KACN,KAAM,IACN,IAAK,KACL,KAAM,IACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,IACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,IAAK,KACL,IAAK,IACL,KAAM,IACN,IAAK,KACL,KAAM,KACN,IAAK,IACL,KAAM,KACN,IAAK,IACL,IAAK,KACL,KAAM,KACN,KAAM,KACN,IAAK,IACL,KAAM,KACN,KAAM,KACN,IAAK,KACL,KAAM,KACN,KAAM,KACN,KAAM,IACN,KAAM,IACN,KAAM,IACN,IAAK,KACL,KAAM,KA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","file":"app-9fbcb973b0e6f88cfc45.js","sourcesContent":["\"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 _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\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\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 (_ref2) {\n var isPartiallyCurrent = _ref2.isPartiallyCurrent,\n isCurrent = _ref2.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.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n ___loader.enqueue((0, _parsePath.parsePath)(rewriteLinkPath(this.props.to, window.location.pathname)).pathname);\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n ___loader.enqueue((0, _parsePath.parsePath)(rewriteLinkPath(this.props.to, window.location.pathname)).pathname);\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 ___loader.enqueue((0, _parsePath.parsePath)(rewriteLinkPath(_this2.props.to, window.location.pathname)).pathname);\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 rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\"]);\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 return /*#__PURE__*/_react.default.createElement(_router.Location, null, function (_ref3) {\n var location = _ref3.location;\n var prefixedTo = rewriteLinkPath(to, location.pathname);\n return isLocalLink(prefixedTo) ? /*#__PURE__*/_react.default.createElement(_router.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: _this3.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 var isCurrent = encodeURI(prefixedTo) === window.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)) : /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n });\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(GatsbyLink, (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;","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","\"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;","module.exports = {};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n","var aFunction = require('../internals/a-function');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar toLength = require('../internals/to-length');\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n return function (that, callbackfn, argumentsLength, memo) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IndexedObject(O);\n var length = toLength(O.length);\n var index = IS_RIGHT ? length - 1 : 0;\n var i = IS_RIGHT ? -1 : 1;\n if (argumentsLength < 2) while (true) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (IS_RIGHT ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.reduce` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n left: createMethod(false),\n // `Array.prototype.reduceRight` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright\n right: createMethod(true)\n};\n","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;","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func\n (function () { return this; })() || Function('return this')();\n","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}","// \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","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\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;","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;","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","exports.polyfill = Component => Component\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;","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPrimitive = require('../internals/to-primitive');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar STRICT_METHOD = arrayMethodIsStrict('reduce');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\n\n// `Array.prototype.reduce` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);\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.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};","\"use strict\";\n\nconst enhanceLunr = (lunr, lngs) => {\n if (lngs.length) {\n require('lunr-languages/lunr.stemmer.support')(lunr);\n\n lngs.forEach(({\n name\n }) => {\n if (name !== 'en') {\n try {\n if (name === 'jp' || name === 'ja') {\n require(`lunr-languages/tinyseg`)(lunr);\n }\n\n require(`lunr-languages/lunr.${name}`)(lunr);\n } catch (e) {\n console.log(e);\n }\n }\n });\n }\n};\n\nmodule.exports = {\n enhanceLunr\n};","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\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","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\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-gtag/gatsby-browser.js'),\n options: {\"plugins\":[],\"trackingId\":\"G-M3574L7N9J\",\"head\":true,\"anonymize\":true},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"name\":\"Devminds - Mind-blowing Software Development\",\"short_name\":\"Devminds\",\"start_url\":\"/\",\"background_color\":\"rgb(0, 155, 222)\",\"theme_color\":\"rgb(0, 155, 222)\",\"display\":\"minimal-ui\",\"icon\":\"/Site/content/assets/images/logo.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"3046d22000503b84c3cfa4b0fc5e9bae\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-lunr/gatsby-browser.js'),\n options: {\"plugins\":[],\"languages\":[{\"name\":\"en\"}],\"fields\":[{\"name\":\"title\",\"store\":true,\"attributes\":{\"boost\":20}},{\"name\":\"content\",\"store\":true},{\"name\":\"tags\",\"store\":true},{\"name\":\"excerpt\",\"store\":true},{\"name\":\"path\",\"store\":true}],\"resolvers\":{\"MarkdownRemark\":{}}},\n },{\n plugin: require('../node_modules/gatsby-remark-autolink-headers/gatsby-browser.js'),\n options: {\"plugins\":[],\"offsetY\":0,\"className\":\"anchor\"},\n },{\n plugin: require('../node_modules/gatsby-remark-images/gatsby-browser.js'),\n options: {\"plugins\":[],\"maxWidth\":1200,\"linkImagesToOriginal\":true,\"showCaptions\":false,\"markdownCaptions\":false,\"sizeByPixelDensity\":false,\"backgroundColor\":\"white\",\"quality\":50,\"withWebp\":false,\"tracedSVG\":false,\"loading\":\"lazy\",\"disableBgImageOnAlpha\":false,\"disableBgImage\":false},\n }]\n","require(\"core-js/modules/es.array.reduce\");\n\n/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n;\n\n(function () {\n /**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\n var lunr = function lunr(config) {\n var builder = new lunr.Builder();\n builder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer);\n builder.searchPipeline.add(lunr.stemmer);\n config.call(builder, builder);\n return builder.build();\n };\n\n lunr.version = \"2.3.9\";\n /*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\n\n lunr.utils = {};\n /**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\n\n lunr.utils.warn = function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message);\n }\n };\n /* eslint-enable no-console */\n }(this);\n /**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\n\n\n lunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\";\n } else {\n return obj.toString();\n }\n };\n /**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\n\n\n lunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key];\n\n if (Array.isArray(val)) {\n clone[key] = val.slice();\n continue;\n }\n\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean') {\n clone[key] = val;\n continue;\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\");\n }\n\n return clone;\n };\n\n lunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef;\n this.fieldName = fieldName;\n this._stringValue = stringValue;\n };\n\n lunr.FieldRef.joiner = \"/\";\n\n lunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner);\n\n if (n === -1) {\n throw \"malformed field ref string\";\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1);\n return new lunr.FieldRef(docRef, fieldRef, s);\n };\n\n lunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef;\n }\n\n return this._stringValue;\n };\n /*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A lunr set.\n *\n * @constructor\n */\n\n\n lunr.Set = function (elements) {\n this.elements = Object.create(null);\n\n if (elements) {\n this.length = elements.length;\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true;\n }\n } else {\n this.length = 0;\n }\n };\n /**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\n\n\n lunr.Set.complete = {\n intersect: function intersect(other) {\n return other;\n },\n union: function union() {\n return this;\n },\n contains: function contains() {\n return true;\n }\n };\n /**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\n\n lunr.Set.empty = {\n intersect: function intersect() {\n return this;\n },\n union: function union(other) {\n return other;\n },\n contains: function contains() {\n return false;\n }\n };\n /**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\n\n lunr.Set.prototype.contains = function (object) {\n return !!this.elements[object];\n };\n /**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\n\n lunr.Set.prototype.intersect = function (other) {\n var a,\n b,\n elements,\n intersection = [];\n\n if (other === lunr.Set.complete) {\n return this;\n }\n\n if (other === lunr.Set.empty) {\n return other;\n }\n\n if (this.length < other.length) {\n a = this;\n b = other;\n } else {\n a = other;\n b = this;\n }\n\n elements = Object.keys(a.elements);\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n\n if (element in b.elements) {\n intersection.push(element);\n }\n }\n\n return new lunr.Set(intersection);\n };\n /**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\n\n lunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete;\n }\n\n if (other === lunr.Set.empty) {\n return this;\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)));\n };\n /**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\n\n\n lunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0;\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue; // Ignore the term index, its not a field\n\n documentsWithTerm += Object.keys(posting[fieldName]).length;\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5);\n return Math.log(1 + Math.abs(x));\n };\n /**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\n\n\n lunr.Token = function (str, metadata) {\n this.str = str || \"\";\n this.metadata = metadata || {};\n };\n /**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\n\n\n lunr.Token.prototype.toString = function () {\n return this.str;\n };\n /**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n /**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\n\n\n lunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata);\n return this;\n };\n /**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\n\n\n lunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) {\n return s;\n };\n\n return new lunr.Token(fn(this.str, this.metadata), this.metadata);\n };\n /*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\n\n\n lunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return [];\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(lunr.utils.asString(t).toLowerCase(), lunr.utils.clone(metadata));\n });\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = [];\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart;\n\n if (char.match(lunr.tokenizer.separator) || sliceEnd == len) {\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {};\n tokenMetadata[\"position\"] = [sliceStart, sliceLength];\n tokenMetadata[\"index\"] = tokens.length;\n tokens.push(new lunr.Token(str.slice(sliceStart, sliceEnd), tokenMetadata));\n }\n\n sliceStart = sliceEnd + 1;\n }\n }\n\n return tokens;\n };\n /**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\n\n\n lunr.tokenizer.separator = /[\\s\\-]+/;\n /*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\n\n lunr.Pipeline = function () {\n this._stack = [];\n };\n\n lunr.Pipeline.registeredFunctions = Object.create(null);\n /**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n /**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\n\n lunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label);\n }\n\n fn.label = label;\n lunr.Pipeline.registeredFunctions[fn.label] = fn;\n };\n /**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\n\n\n lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && fn.label in this.registeredFunctions;\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn);\n }\n };\n /**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\n\n\n lunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline();\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName];\n\n if (fn) {\n pipeline.add(fn);\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName);\n }\n });\n return pipeline;\n };\n /**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\n\n\n lunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments);\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn);\n\n this._stack.push(fn);\n }, this);\n };\n /**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\n\n\n lunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n\n var pos = this._stack.indexOf(existingFn);\n\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n\n pos = pos + 1;\n\n this._stack.splice(pos, 0, newFn);\n };\n /**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\n\n\n lunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n\n var pos = this._stack.indexOf(existingFn);\n\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n\n this._stack.splice(pos, 0, newFn);\n };\n /**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\n\n\n lunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn);\n\n if (pos == -1) {\n return;\n }\n\n this._stack.splice(pos, 1);\n };\n /**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\n\n\n lunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length;\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i];\n var memo = [];\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens);\n if (result === null || result === void 0 || result === '') continue;\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k]);\n }\n } else {\n memo.push(result);\n }\n }\n\n tokens = memo;\n }\n\n return tokens;\n };\n /**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\n\n\n lunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token(str, metadata);\n return this.run([token]).map(function (t) {\n return t.toString();\n });\n };\n /**\n * Resets the pipeline by removing any existing processors.\n *\n */\n\n\n lunr.Pipeline.prototype.reset = function () {\n this._stack = [];\n };\n /**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\n\n\n lunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn);\n return fn.label;\n });\n };\n /*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\n\n\n lunr.Vector = function (elements) {\n this._magnitude = 0;\n this.elements = elements || [];\n };\n /**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\n\n\n lunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0;\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2];\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint;\n }\n\n if (pivotIndex > index) {\n end = pivotPoint;\n }\n\n if (pivotIndex == index) {\n break;\n }\n\n sliceLength = end - start;\n pivotPoint = start + Math.floor(sliceLength / 2);\n pivotIndex = this.elements[pivotPoint * 2];\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2;\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2;\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2;\n }\n };\n /**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\n\n\n lunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\";\n });\n };\n /**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\n\n\n lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0;\n var position = this.positionForIndex(insertIdx);\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val);\n } else {\n this.elements.splice(position, 0, insertIdx, val);\n }\n };\n /**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\n\n\n lunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude;\n var sumOfSquares = 0,\n elementsLength = this.elements.length;\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i];\n sumOfSquares += val * val;\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares);\n };\n /**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\n\n\n lunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements,\n b = otherVector.elements,\n aLen = a.length,\n bLen = b.length,\n aVal = 0,\n bVal = 0,\n i = 0,\n j = 0;\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j];\n\n if (aVal < bVal) {\n i += 2;\n } else if (aVal > bVal) {\n j += 2;\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1];\n i += 2;\n j += 2;\n }\n }\n\n return dotProduct;\n };\n /**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\n\n\n lunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0;\n };\n /**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\n\n\n lunr.Vector.prototype.toArray = function () {\n var output = new Array(this.elements.length / 2);\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i];\n }\n\n return output;\n };\n /**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\n\n\n lunr.Vector.prototype.toJSON = function () {\n return this.elements;\n };\n /* eslint-disable */\n\n /*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n /**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\n\n\n lunr.stemmer = function () {\n var step2list = {\n \"ational\": \"ate\",\n \"tional\": \"tion\",\n \"enci\": \"ence\",\n \"anci\": \"ance\",\n \"izer\": \"ize\",\n \"bli\": \"ble\",\n \"alli\": \"al\",\n \"entli\": \"ent\",\n \"eli\": \"e\",\n \"ousli\": \"ous\",\n \"ization\": \"ize\",\n \"ation\": \"ate\",\n \"ator\": \"ate\",\n \"alism\": \"al\",\n \"iveness\": \"ive\",\n \"fulness\": \"ful\",\n \"ousness\": \"ous\",\n \"aliti\": \"al\",\n \"iviti\": \"ive\",\n \"biliti\": \"ble\",\n \"logi\": \"log\"\n },\n step3list = {\n \"icate\": \"ic\",\n \"ative\": \"\",\n \"alize\": \"al\",\n \"iciti\": \"ic\",\n \"ical\": \"ic\",\n \"ful\": \"\",\n \"ness\": \"\"\n },\n c = \"[^aeiou]\",\n // consonant\n v = \"[aeiouy]\",\n // vowel\n C = c + \"[^aeiouy]*\",\n // consonant sequence\n V = v + \"[aeiou]*\",\n // vowel sequence\n mgr0 = \"^(\" + C + \")?\" + V + C,\n // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\",\n // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C,\n // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem, suffix, firstch, re, re2, re3, re4;\n\n if (w.length < 3) {\n return w;\n }\n\n firstch = w.substr(0, 1);\n\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n } // Step 1a\n\n\n re = re_1a;\n re2 = re2_1a;\n\n if (re.test(w)) {\n w = w.replace(re, \"$1$2\");\n } else if (re2.test(w)) {\n w = w.replace(re2, \"$1$2\");\n } // Step 1b\n\n\n re = re_1b;\n re2 = re2_1b;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n\n if (re2.test(w)) {\n w = w + \"e\";\n } else if (re3.test(w)) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n } else if (re4.test(w)) {\n w = w + \"e\";\n }\n }\n } // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n\n\n re = re_1c;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n } // Step 2\n\n\n re = re_2;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n } // Step 3\n\n\n re = re_3;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n } // Step 4\n\n\n re = re_4;\n re2 = re2_4;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n\n if (re2.test(stem)) {\n w = stem;\n }\n } // Step 5\n\n\n re = re_5;\n\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n\n if (re.test(stem) || re2.test(stem) && !re3.test(stem)) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n } // and turn initial Y back to y\n\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n };\n }();\n\n lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer');\n /*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\n\n lunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord;\n return memo;\n }, {});\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token;\n };\n };\n /**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\n\n\n lunr.stopWordFilter = lunr.generateStopWordFilter(['a', 'able', 'about', 'across', 'after', 'all', 'almost', 'also', 'am', 'among', 'an', 'and', 'any', 'are', 'as', 'at', 'be', 'because', 'been', 'but', 'by', 'can', 'cannot', 'could', 'dear', 'did', 'do', 'does', 'either', 'else', 'ever', 'every', 'for', 'from', 'get', 'got', 'had', 'has', 'have', 'he', 'her', 'hers', 'him', 'his', 'how', 'however', 'i', 'if', 'in', 'into', 'is', 'it', 'its', 'just', 'least', 'let', 'like', 'likely', 'may', 'me', 'might', 'most', 'must', 'my', 'neither', 'no', 'nor', 'not', 'of', 'off', 'often', 'on', 'only', 'or', 'other', 'our', 'own', 'rather', 'said', 'say', 'says', 'she', 'should', 'since', 'so', 'some', 'than', 'that', 'the', 'their', 'them', 'then', 'there', 'these', 'they', 'this', 'tis', 'to', 'too', 'twas', 'us', 'wants', 'was', 'we', 'were', 'what', 'when', 'where', 'which', 'while', 'who', 'whom', 'why', 'will', 'with', 'would', 'yet', 'you', 'your']);\n lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter');\n /*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\n\n lunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '');\n });\n };\n\n lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer');\n /*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\n\n lunr.TokenSet = function () {\n this.final = false;\n this.edges = {};\n this.id = lunr.TokenSet._nextId;\n lunr.TokenSet._nextId += 1;\n };\n /**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\n\n\n lunr.TokenSet._nextId = 1;\n /**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\n\n lunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder();\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i]);\n }\n\n builder.finish();\n return builder.root;\n };\n /**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\n\n\n lunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance);\n } else {\n return lunr.TokenSet.fromString(clause.term);\n }\n };\n /**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\n\n\n lunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet();\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }];\n\n while (stack.length) {\n var frame = stack.pop(); // no edit\n\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode;\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char];\n } else {\n noEditNode = new lunr.TokenSet();\n frame.node.edges[char] = noEditNode;\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true;\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n });\n }\n\n if (frame.editsRemaining == 0) {\n continue;\n } // insertion\n\n\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"];\n } else {\n var insertionNode = new lunr.TokenSet();\n frame.node.edges[\"*\"] = insertionNode;\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true;\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n }); // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n });\n } // deletion\n // just removing the last character from the str\n\n\n if (frame.str.length == 1) {\n frame.node.final = true;\n } // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n\n\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"];\n } else {\n var substitutionNode = new lunr.TokenSet();\n frame.node.edges[\"*\"] = substitutionNode;\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true;\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n });\n } // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n\n\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode;\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB];\n } else {\n transposeNode = new lunr.TokenSet();\n frame.node.edges[charB] = transposeNode;\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true;\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n });\n }\n }\n\n return root;\n };\n /**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\n\n\n lunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet(),\n root = node;\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = i == len - 1;\n\n if (char == \"*\") {\n node.edges[char] = node;\n node.final = final;\n } else {\n var next = new lunr.TokenSet();\n next.final = final;\n node.edges[char] = next;\n node = next;\n }\n }\n\n return root;\n };\n /**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\n\n\n lunr.TokenSet.prototype.toArray = function () {\n var words = [];\n var stack = [{\n prefix: \"\",\n node: this\n }];\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length;\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0);\n words.push(frame.prefix);\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n });\n }\n }\n\n return words;\n };\n /**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\n\n\n lunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n if (this._str) {\n return this._str;\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length;\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label];\n str = str + label + node.id;\n }\n\n return str;\n };\n /**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\n\n\n lunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet(),\n frame = undefined;\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }];\n\n while (stack.length) {\n frame = stack.pop(); // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length;\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q];\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n];\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined;\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge];\n next.final = next.final || final;\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet();\n next.final = final;\n frame.output.edges[nEdge] = next;\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n });\n }\n }\n }\n }\n\n return output;\n };\n\n lunr.TokenSet.Builder = function () {\n this.previousWord = \"\";\n this.root = new lunr.TokenSet();\n this.uncheckedNodes = [];\n this.minimizedNodes = {};\n };\n\n lunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0;\n\n if (word < this.previousWord) {\n throw new Error(\"Out of order word insertion\");\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break;\n commonPrefix++;\n }\n\n this.minimize(commonPrefix);\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root;\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child;\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet(),\n char = word[i];\n node.edges[char] = nextNode;\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n });\n node = nextNode;\n }\n\n node.final = true;\n this.previousWord = word;\n };\n\n lunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0);\n };\n\n lunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString();\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey];\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey;\n this.minimizedNodes[childKey] = node.child;\n }\n\n this.uncheckedNodes.pop();\n }\n };\n /*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\n\n\n lunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex;\n this.fieldVectors = attrs.fieldVectors;\n this.tokenSet = attrs.tokenSet;\n this.fields = attrs.fields;\n this.pipeline = attrs.pipeline;\n };\n /**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n /**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n /**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\n\n\n lunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query);\n parser.parse();\n });\n };\n /**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n /**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\n\n\n lunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null);\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector();\n }\n\n fn.call(query, query);\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty;\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n });\n } else {\n terms = [clause.term];\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m];\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n\n clause.term = term;\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray();\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k];\n requiredMatches[field] = lunr.Set.empty;\n }\n\n break;\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index;\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs);\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet);\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete;\n }\n }\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n\n\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty;\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet);\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n\n continue;\n }\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n\n\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) {\n return a + b;\n });\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n\n if (termFieldCache[termField]) {\n continue;\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef(matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch;\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData(expandedTerm, field, metadata);\n } else {\n fieldMatch.add(expandedTerm, field, metadata);\n }\n }\n\n termFieldCache[termField] = true;\n }\n }\n }\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n\n\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k];\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches);\n }\n }\n }\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n\n\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty;\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i];\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]);\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]);\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null);\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors);\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i];\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef);\n matchingFields[matchingFieldRef] = new lunr.MatchData();\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef;\n\n if (!allRequiredMatches.contains(docRef)) {\n continue;\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue;\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch;\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score;\n docMatch.matchData.combine(matchingFields[fieldRef]);\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n };\n matches[docRef] = match;\n results.push(match);\n }\n }\n /*\n * Sort the results objects by score, highest first.\n */\n\n\n return results.sort(function (a, b) {\n return b.score - a.score;\n });\n };\n /**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\n\n\n lunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex).sort().map(function (term) {\n return [term, this.invertedIndex[term]];\n }, this);\n var fieldVectors = Object.keys(this.fieldVectors).map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()];\n }, this);\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n };\n };\n /**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\n\n\n lunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder(),\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline);\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\");\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1];\n fieldVectors[ref] = new lunr.Vector(elements);\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1];\n tokenSetBuilder.insert(term);\n invertedIndex[term] = posting;\n }\n\n tokenSetBuilder.finish();\n attrs.fields = serializedIndex.fields;\n attrs.fieldVectors = fieldVectors;\n attrs.invertedIndex = invertedIndex;\n attrs.tokenSet = tokenSetBuilder.root;\n attrs.pipeline = pipeline;\n return new lunr.Index(attrs);\n };\n /*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\n\n\n lunr.Builder = function () {\n this._ref = \"id\";\n this._fields = Object.create(null);\n this._documents = Object.create(null);\n this.invertedIndex = Object.create(null);\n this.fieldTermFrequencies = {};\n this.fieldLengths = {};\n this.tokenizer = lunr.tokenizer;\n this.pipeline = new lunr.Pipeline();\n this.searchPipeline = new lunr.Pipeline();\n this.documentCount = 0;\n this._b = 0.75;\n this._k1 = 1.2;\n this.termIndex = 0;\n this.metadataWhitelist = [];\n };\n /**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\n\n\n lunr.Builder.prototype.ref = function (ref) {\n this._ref = ref;\n };\n /**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n /**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\n\n\n lunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError(\"Field '\" + fieldName + \"' contains illegal character '/'\");\n }\n\n this._fields[fieldName] = attributes || {};\n };\n /**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\n\n\n lunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0;\n } else if (number > 1) {\n this._b = 1;\n } else {\n this._b = number;\n }\n };\n /**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\n\n\n lunr.Builder.prototype.k1 = function (number) {\n this._k1 = number;\n };\n /**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\n\n\n lunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields);\n this._documents[docRef] = attributes || {};\n this.documentCount += 1;\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef(docRef, fieldName),\n fieldTerms = Object.create(null);\n this.fieldTermFrequencies[fieldRef] = fieldTerms;\n this.fieldLengths[fieldRef] = 0; // store the length of this field for this document\n\n this.fieldLengths[fieldRef] += terms.length; // calculate term frequencies for this field\n\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j];\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0;\n }\n\n fieldTerms[term] += 1; // add to inverted index\n // create an initial posting if one doesn't exist\n\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null);\n posting[\"_index\"] = this.termIndex;\n this.termIndex += 1;\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null);\n }\n\n this.invertedIndex[term] = posting;\n } // add an entry for this term/fieldName/docRef to the invertedIndex\n\n\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null);\n } // store all whitelisted metadata about this token in the\n // inverted index\n\n\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey];\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = [];\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata);\n }\n }\n }\n };\n /**\n * Calculates the average document length for this index\n *\n * @private\n */\n\n\n lunr.Builder.prototype.calculateAverageFieldLengths = function () {\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {};\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName;\n documentsWithField[field] || (documentsWithField[field] = 0);\n documentsWithField[field] += 1;\n accumulator[field] || (accumulator[field] = 0);\n accumulator[field] += this.fieldLengths[fieldRef];\n }\n\n var fields = Object.keys(this._fields);\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i];\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName];\n }\n\n this.averageFieldLength = accumulator;\n };\n /**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\n\n\n lunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null);\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector(),\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length;\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1;\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf,\n score,\n scoreWithPrecision;\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount);\n termIdfCache[term] = idf;\n } else {\n idf = termIdfCache[term];\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf);\n score *= fieldBoost;\n score *= docBoost;\n scoreWithPrecision = Math.round(score * 1000) / 1000; // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision);\n }\n\n fieldVectors[fieldRef] = fieldVector;\n }\n\n this.fieldVectors = fieldVectors;\n };\n /**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\n\n\n lunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(Object.keys(this.invertedIndex).sort());\n };\n /**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\n\n\n lunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths();\n this.createFieldVectors();\n this.createTokenSet();\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n });\n };\n /**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\n\n\n lunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1);\n args.unshift(this);\n fn.apply(this, args);\n };\n /**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\n\n\n lunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {}); // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n clonedMetadata[key] = metadata[key].slice();\n }\n\n this.metadata = Object.create(null);\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null);\n this.metadata[term][field] = clonedMetadata;\n }\n };\n /**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\n\n\n lunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata);\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term]);\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null);\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field]);\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null);\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key];\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]);\n }\n }\n }\n }\n };\n /**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\n\n\n lunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null);\n this.metadata[term][field] = metadata;\n return;\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata;\n return;\n }\n\n var metadataKeys = Object.keys(metadata);\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]);\n } else {\n this.metadata[term][field][key] = metadata[key];\n }\n }\n };\n /**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\n\n\n lunr.Query = function (allFields) {\n this.clauses = [];\n this.allFields = allFields;\n };\n /**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\n\n lunr.Query.wildcard = new String(\"*\");\n lunr.Query.wildcard.NONE = 0;\n lunr.Query.wildcard.LEADING = 1;\n lunr.Query.wildcard.TRAILING = 2;\n /**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\n\n lunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n };\n /**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n /**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\n\n lunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields;\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1;\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true;\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE;\n }\n\n if (clause.wildcard & lunr.Query.wildcard.LEADING && clause.term.charAt(0) != lunr.Query.wildcard) {\n clause.term = \"*\" + clause.term;\n }\n\n if (clause.wildcard & lunr.Query.wildcard.TRAILING && clause.term.slice(-1) != lunr.Query.wildcard) {\n clause.term = \"\" + clause.term + \"*\";\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL;\n }\n\n this.clauses.push(clause);\n return this;\n };\n /**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\n\n\n lunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\n\n\n lunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) {\n this.term(t, lunr.utils.clone(options));\n }, this);\n return this;\n }\n\n var clause = options || {};\n clause.term = term.toString();\n this.clause(clause);\n return this;\n };\n\n lunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\";\n this.message = message;\n this.start = start;\n this.end = end;\n };\n\n lunr.QueryParseError.prototype = new Error();\n\n lunr.QueryLexer = function (str) {\n this.lexemes = [];\n this.str = str;\n this.length = str.length;\n this.pos = 0;\n this.start = 0;\n this.escapeCharPositions = [];\n };\n\n lunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText;\n\n while (state) {\n state = state(this);\n }\n };\n\n lunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos;\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i];\n subSlices.push(this.str.slice(sliceStart, sliceEnd));\n sliceStart = sliceEnd + 1;\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos));\n this.escapeCharPositions.length = 0;\n return subSlices.join('');\n };\n\n lunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n });\n this.start = this.pos;\n };\n\n lunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1);\n this.pos += 1;\n };\n\n lunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS;\n }\n\n var char = this.str.charAt(this.pos);\n this.pos += 1;\n return char;\n };\n\n lunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start;\n };\n\n lunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1;\n }\n\n this.start = this.pos;\n };\n\n lunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1;\n };\n\n lunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode;\n\n do {\n char = this.next();\n charCode = char.charCodeAt(0);\n } while (charCode > 47 && charCode < 58);\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup();\n }\n };\n\n lunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length;\n };\n\n lunr.QueryLexer.EOS = 'EOS';\n lunr.QueryLexer.FIELD = 'FIELD';\n lunr.QueryLexer.TERM = 'TERM';\n lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE';\n lunr.QueryLexer.BOOST = 'BOOST';\n lunr.QueryLexer.PRESENCE = 'PRESENCE';\n\n lunr.QueryLexer.lexField = function (lexer) {\n lexer.backup();\n lexer.emit(lunr.QueryLexer.FIELD);\n lexer.ignore();\n return lunr.QueryLexer.lexText;\n };\n\n lunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup();\n lexer.emit(lunr.QueryLexer.TERM);\n }\n\n lexer.ignore();\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText;\n }\n };\n\n lunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore();\n lexer.acceptDigitRun();\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE);\n return lunr.QueryLexer.lexText;\n };\n\n lunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore();\n lexer.acceptDigitRun();\n lexer.emit(lunr.QueryLexer.BOOST);\n return lunr.QueryLexer.lexText;\n };\n\n lunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n }; // This matches the separator used when tokenising fields\n // within a document. These should match otherwise it is\n // not possible to search for some tokens within a document.\n //\n // It is possible for the user to change the separator on the\n // tokenizer so it _might_ clash with any other of the special\n // characters already used within the search string, e.g. :.\n //\n // This means that it is possible to change the separator in\n // such a way that makes some words unsearchable using a search\n // string.\n\n\n lunr.QueryLexer.termSeparator = lunr.tokenizer.separator;\n\n lunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next();\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS;\n } // Escape character is '\\'\n\n\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter();\n continue;\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField;\n }\n\n if (char == \"~\") {\n lexer.backup();\n\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n\n return lunr.QueryLexer.lexEditDistance;\n }\n\n if (char == \"^\") {\n lexer.backup();\n\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n\n return lunr.QueryLexer.lexBoost;\n } // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n\n\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n } // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n\n\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm;\n }\n }\n };\n\n lunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer(str);\n this.query = query;\n this.currentClause = {};\n this.lexemeIdx = 0;\n };\n\n lunr.QueryParser.prototype.parse = function () {\n this.lexer.run();\n this.lexemes = this.lexer.lexemes;\n var state = lunr.QueryParser.parseClause;\n\n while (state) {\n state = state(this);\n }\n\n return this.query;\n };\n\n lunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx];\n };\n\n lunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme();\n this.lexemeIdx += 1;\n return lexeme;\n };\n\n lunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause;\n this.query.clause(completedClause);\n this.currentClause = {};\n };\n\n lunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence;\n\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type;\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\";\n }\n\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n };\n\n lunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED;\n break;\n\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED;\n break;\n\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n\n lunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) {\n return \"'\" + f + \"'\";\n }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields;\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n parser.currentClause.fields = [lexeme.str];\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n\n lunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase();\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false;\n }\n\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n\n lunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n var editDistance = parseInt(lexeme.str, 10);\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n parser.currentClause.editDistance = editDistance;\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n\n lunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme();\n\n if (lexeme == undefined) {\n return;\n }\n\n var boost = parseInt(lexeme.str, 10);\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n\n parser.currentClause.boost = boost;\n var nextLexeme = parser.peekLexeme();\n\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n }\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;\n\n (function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.lunr = factory();\n }\n })(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr;\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","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\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---node-modules-nehalist-gatsby-theme-nehalem-src-templates-page-tsx\": () => import(\"./../../../node_modules/@nehalist/gatsby-theme-nehalem/src/templates/page.tsx\" /* webpackChunkName: \"component---node-modules-nehalist-gatsby-theme-nehalem-src-templates-page-tsx\" */),\n \"component---node-modules-nehalist-gatsby-theme-nehalem-src-templates-post-tsx\": () => import(\"./../../../node_modules/@nehalist/gatsby-theme-nehalem/src/templates/post.tsx\" /* webpackChunkName: \"component---node-modules-nehalist-gatsby-theme-nehalem-src-templates-post-tsx\" */),\n \"component---node-modules-nehalist-gatsby-theme-nehalem-src-templates-tag-tsx\": () => import(\"./../../../node_modules/@nehalist/gatsby-theme-nehalem/src/templates/tag.tsx\" /* webpackChunkName: \"component---node-modules-nehalist-gatsby-theme-nehalem-src-templates-tag-tsx\" */),\n \"component---src-nehalist-gatsby-theme-nehalem-pages-404-tsx\": () => import(\"./../../../src/@nehalist/gatsby-theme-nehalem/pages/404.tsx\" /* webpackChunkName: \"component---src-nehalist-gatsby-theme-nehalem-pages-404-tsx\" */),\n \"component---src-nehalist-gatsby-theme-nehalem-pages-archive-tsx\": () => import(\"./../../../src/@nehalist/gatsby-theme-nehalem/pages/archive.tsx\" /* webpackChunkName: \"component---src-nehalist-gatsby-theme-nehalem-pages-archive-tsx\" */),\n \"component---src-nehalist-gatsby-theme-nehalem-pages-tags-tsx\": () => import(\"./../../../src/@nehalist/gatsby-theme-nehalem/pages/tags.tsx\" /* webpackChunkName: \"component---src-nehalist-gatsby-theme-nehalem-pages-tags-tsx\" */),\n \"component---src-pages-company-tsx\": () => import(\"./../../../src/pages/company.tsx\" /* webpackChunkName: \"component---src-pages-company-tsx\" */),\n \"component---src-pages-consultancy-tsx\": () => import(\"./../../../src/pages/consultancy.tsx\" /* webpackChunkName: \"component---src-pages-consultancy-tsx\" */),\n \"component---src-pages-index-tsx\": () => import(\"./../../../src/pages/index.tsx\" /* webpackChunkName: \"component---src-pages-index-tsx\" */)\n}\n\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","/**\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","var global = require('../internals/global');\n\nmodule.exports = global;\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\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.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\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","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;","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.7.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _objectSpread2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectSpread\"));\n\n/* global __PATH_PREFIX__ */\nconst lunr = require(\"lunr\");\n\nconst {\n enhanceLunr\n} = require(\"./common.js\");\n\nexports.onClientEntry = (args, {\n languages,\n filename = \"search_index.json\",\n fetchOptions = {}\n}) => {\n enhanceLunr(lunr, languages);\n window.__LUNR__ = window.__LUNR__ || {};\n window.__LUNR__.__loaded = fetch(`${__PATH_PREFIX__}/${filename}`, fetchOptions).then(function (response) {\n return response.json();\n }).then(function (fullIndex) {\n window.__LUNR__ = Object.keys(fullIndex).reduce((prev, key) => (0, _objectSpread2.default)({}, prev, {\n [key]: {\n index: lunr.Index.load(fullIndex[key].index),\n store: fullIndex[key].store\n }\n }), {\n __loaded: window.__LUNR__.__loaded\n });\n return window.__LUNR__;\n }).catch(e => {\n console.log(\"Failed fetch search index\");\n throw e;\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, { getStaticQueryResults } from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n let combinedStaticQueryData = staticQueryData\n\n if (process.env.GATSBY_EXPERIMENTAL_LAZY_DEVJS) {\n // when we remove the flag, we don't need to combine them\n // w/ changes @pieh made.\n combinedStaticQueryData = {\n ...getStaticQueryResults(),\n ...staticQueryData,\n }\n }\n\n const finalData = data\n ? data.data\n : combinedStaticQueryData[query] && combinedStaticQueryData[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 let queryNotFound = false\n if (process.env.GATSBY_EXPERIMENTAL_LAZY_DEVJS) {\n // Merge data loaded via socket.io & xhr\n // when we remove the flag, we don't need to combine them\n // w/ changes @pieh made.\n const staticQueryData = {\n ...getStaticQueryResults(),\n ...context,\n }\n if (staticQueryData[query]?.data) {\n return staticQueryData[query].data\n } else {\n queryNotFound = true\n }\n } else {\n if (context[query]?.data) {\n return context[query].data\n } else {\n queryNotFound = true\n }\n }\n\n if (queryNotFound) {\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 return null\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","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var classof = require('../internals/classof-raw');\nvar global = require('../internals/global');\n\nmodule.exports = classof(global.process) == 'process';\n","\"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 * Snowball JavaScript Library v0.3\n * http://code.google.com/p/urim/\n * http://snowball.tartarus.org/\n *\n * Copyright 2010, Oleg Mazko\n * http://www.mozilla.org/MPL/\n */\n\n/**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n;\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like environments that support module.exports,\n * like Node.\n */\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n factory()(root.lunr);\n }\n})(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return function (lunr) {\n /* provides utilities for the included stemmers */\n lunr.stemmerSupport = {\n Among: function Among(s, substring_i, result, method) {\n this.toCharArray = function (s) {\n var sLength = s.length,\n charArr = new Array(sLength);\n\n for (var i = 0; i < sLength; i++) {\n charArr[i] = s.charCodeAt(i);\n }\n\n return charArr;\n };\n\n if (!s && s != \"\" || !substring_i && substring_i != 0 || !result) throw \"Bad Among initialisation: s:\" + s + \", substring_i: \" + substring_i + \", result: \" + result;\n this.s_size = s.length;\n this.s = this.toCharArray(s);\n this.substring_i = substring_i;\n this.result = result;\n this.method = method;\n },\n SnowballProgram: function SnowballProgram() {\n var current;\n return {\n bra: 0,\n ket: 0,\n limit: 0,\n cursor: 0,\n limit_backward: 0,\n setCurrent: function setCurrent(word) {\n current = word;\n this.cursor = 0;\n this.limit = word.length;\n this.limit_backward = 0;\n this.bra = this.cursor;\n this.ket = this.limit;\n },\n getCurrent: function getCurrent() {\n var result = current;\n current = null;\n return result;\n },\n in_grouping: function in_grouping(s, min, max) {\n if (this.cursor < this.limit) {\n var ch = current.charCodeAt(this.cursor);\n\n if (ch <= max && ch >= min) {\n ch -= min;\n\n if (s[ch >> 3] & 0X1 << (ch & 0X7)) {\n this.cursor++;\n return true;\n }\n }\n }\n\n return false;\n },\n in_grouping_b: function in_grouping_b(s, min, max) {\n if (this.cursor > this.limit_backward) {\n var ch = current.charCodeAt(this.cursor - 1);\n\n if (ch <= max && ch >= min) {\n ch -= min;\n\n if (s[ch >> 3] & 0X1 << (ch & 0X7)) {\n this.cursor--;\n return true;\n }\n }\n }\n\n return false;\n },\n out_grouping: function out_grouping(s, min, max) {\n if (this.cursor < this.limit) {\n var ch = current.charCodeAt(this.cursor);\n\n if (ch > max || ch < min) {\n this.cursor++;\n return true;\n }\n\n ch -= min;\n\n if (!(s[ch >> 3] & 0X1 << (ch & 0X7))) {\n this.cursor++;\n return true;\n }\n }\n\n return false;\n },\n out_grouping_b: function out_grouping_b(s, min, max) {\n if (this.cursor > this.limit_backward) {\n var ch = current.charCodeAt(this.cursor - 1);\n\n if (ch > max || ch < min) {\n this.cursor--;\n return true;\n }\n\n ch -= min;\n\n if (!(s[ch >> 3] & 0X1 << (ch & 0X7))) {\n this.cursor--;\n return true;\n }\n }\n\n return false;\n },\n eq_s: function eq_s(s_size, s) {\n if (this.limit - this.cursor < s_size) return false;\n\n for (var i = 0; i < s_size; i++) {\n if (current.charCodeAt(this.cursor + i) != s.charCodeAt(i)) return false;\n }\n\n this.cursor += s_size;\n return true;\n },\n eq_s_b: function eq_s_b(s_size, s) {\n if (this.cursor - this.limit_backward < s_size) return false;\n\n for (var i = 0; i < s_size; i++) {\n if (current.charCodeAt(this.cursor - s_size + i) != s.charCodeAt(i)) return false;\n }\n\n this.cursor -= s_size;\n return true;\n },\n find_among: function find_among(v, v_size) {\n var i = 0,\n j = v_size,\n c = this.cursor,\n l = this.limit,\n common_i = 0,\n common_j = 0,\n first_key_inspected = false;\n\n while (true) {\n var k = i + (j - i >> 1),\n diff = 0,\n common = common_i < common_j ? common_i : common_j,\n w = v[k];\n\n for (var i2 = common; i2 < w.s_size; i2++) {\n if (c + common == l) {\n diff = -1;\n break;\n }\n\n diff = current.charCodeAt(c + common) - w.s[i2];\n if (diff) break;\n common++;\n }\n\n if (diff < 0) {\n j = k;\n common_j = common;\n } else {\n i = k;\n common_i = common;\n }\n\n if (j - i <= 1) {\n if (i > 0 || j == i || first_key_inspected) break;\n first_key_inspected = true;\n }\n }\n\n while (true) {\n var w = v[i];\n\n if (common_i >= w.s_size) {\n this.cursor = c + w.s_size;\n if (!w.method) return w.result;\n var res = w.method();\n this.cursor = c + w.s_size;\n if (res) return w.result;\n }\n\n i = w.substring_i;\n if (i < 0) return 0;\n }\n },\n find_among_b: function find_among_b(v, v_size) {\n var i = 0,\n j = v_size,\n c = this.cursor,\n lb = this.limit_backward,\n common_i = 0,\n common_j = 0,\n first_key_inspected = false;\n\n while (true) {\n var k = i + (j - i >> 1),\n diff = 0,\n common = common_i < common_j ? common_i : common_j,\n w = v[k];\n\n for (var i2 = w.s_size - 1 - common; i2 >= 0; i2--) {\n if (c - common == lb) {\n diff = -1;\n break;\n }\n\n diff = current.charCodeAt(c - 1 - common) - w.s[i2];\n if (diff) break;\n common++;\n }\n\n if (diff < 0) {\n j = k;\n common_j = common;\n } else {\n i = k;\n common_i = common;\n }\n\n if (j - i <= 1) {\n if (i > 0 || j == i || first_key_inspected) break;\n first_key_inspected = true;\n }\n }\n\n while (true) {\n var w = v[i];\n\n if (common_i >= w.s_size) {\n this.cursor = c - w.s_size;\n if (!w.method) return w.result;\n var res = w.method();\n this.cursor = c - w.s_size;\n if (res) return w.result;\n }\n\n i = w.substring_i;\n if (i < 0) return 0;\n }\n },\n replace_s: function replace_s(c_bra, c_ket, s) {\n var adjustment = s.length - (c_ket - c_bra),\n left = current.substring(0, c_bra),\n right = current.substring(c_ket);\n current = left + s + right;\n this.limit += adjustment;\n if (this.cursor >= c_ket) this.cursor += adjustment;else if (this.cursor > c_bra) this.cursor = c_bra;\n return adjustment;\n },\n slice_check: function slice_check() {\n if (this.bra < 0 || this.bra > this.ket || this.ket > this.limit || this.limit > current.length) throw \"faulty slice operation\";\n },\n slice_from: function slice_from(s) {\n this.slice_check();\n this.replace_s(this.bra, this.ket, s);\n },\n slice_del: function slice_del() {\n this.slice_from(\"\");\n },\n insert: function insert(c_bra, c_ket, s) {\n var adjustment = this.replace_s(c_bra, c_ket, s);\n if (c_bra <= this.bra) this.bra += adjustment;\n if (c_bra <= this.ket) this.ket += adjustment;\n },\n slice_to: function slice_to() {\n this.slice_check();\n return current.substring(this.bra, this.ket);\n },\n eq_v_b: function eq_v_b(s) {\n return this.eq_s_b(s.length, s);\n }\n };\n }\n };\n lunr.trimmerSupport = {\n generateTrimmer: function generateTrimmer(wordCharacters) {\n var startRegex = new RegExp(\"^[^\" + wordCharacters + \"]+\");\n var endRegex = new RegExp(\"[^\" + wordCharacters + \"]+$\");\n return function (token) {\n // for lunr version 2\n if (typeof token.update === \"function\") {\n return token.update(function (s) {\n return s.replace(startRegex, '').replace(endRegex, '');\n });\n } else {\n // for lunr version 1\n return token.replace(startRegex, '').replace(endRegex, '');\n }\n };\n }\n };\n };\n});","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\n\nvar _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\nexports.onRouteUpdate = function (_ref) {\n var location = _ref.location;\n\n var trackingId = window.GATSBY_GTAG_PLUGIN_GA_TRACKING_ID;\n var anonymize = window.GATSBY_GTAG_PLUGIN_ANONYMIZE || false;\n\n if (!trackingId || typeof window.gtag !== 'function') {\n return;\n }\n\n var locationStr = '';\n\n if (location) {\n locationStr = '' + location.pathname + location.search + location.hash;\n }\n\n var anonymizeObj = {};\n if (anonymize) {\n anonymizeObj = { anonymize_ip: true };\n }\n\n window.gtag('config', trackingId, _extends({\n page_path: locationStr\n }, anonymizeObj));\n};","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\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;","/**\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","\"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}","exports.f = Object.getOwnPropertySymbols;\n","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","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}","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 // In development, check if the page is in the bundle yet.\n if (\n process.env.NODE_ENV === `development` &&\n process.env.GATSBY_EXPERIMENTAL_LAZY_DEVJS\n ) {\n const ensureComponentInBundle = require(`./ensure-page-component-in-bundle`)\n .default\n if (process.env.NODE_ENV !== `test`) {\n delete require.cache[\n require.resolve(`$virtual/lazy-client-sync-requires`)\n ]\n }\n\n const lazyRequires = require(`$virtual/lazy-client-sync-requires`)\n if (\n lazyRequires.notVisitedPageComponents[\n jsonPayload.componentChunkName\n ]\n ) {\n // Tell the server the user wants to visit this page\n // to trigger it including the page component's code in the\n // commons bundles.\n ensureComponentInBundle(jsonPayload.componentChunkName)\n\n return new Promise(resolve =>\n setTimeout(() => resolve(this.fetchPageDataJson(loadObj)), 100)\n )\n }\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.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND || !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 (\n !process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND ||\n !page.payload.stale\n ) {\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","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var fails = require('../internals/fails');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","var map = {};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"hC0v\";","\"use strict\";\n\nvar offsetY = 0;\n\nvar getTargetOffset = function getTargetOffset(hash) {\n var id = window.decodeURI(hash.replace(\"#\", \"\"));\n\n if (id !== \"\") {\n var element = document.getElementById(id);\n\n if (element) {\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;\n var clientTop = document.documentElement.clientTop || document.body.clientTop || 0;\n var computedStyles = window.getComputedStyle(element);\n var scrollMarginTop = computedStyles.getPropertyValue(\"scroll-margin-top\") || computedStyles.getPropertyValue(\"scroll-snap-margin-top\") || \"0px\";\n return element.getBoundingClientRect().top + scrollTop - parseInt(scrollMarginTop, 10) - clientTop - offsetY;\n }\n }\n\n return null;\n};\n\nexports.onInitialClientRender = function (_, pluginOptions) {\n if (pluginOptions.offsetY) {\n offsetY = pluginOptions.offsetY;\n }\n\n requestAnimationFrame(function () {\n var offset = getTargetOffset(window.location.hash);\n\n if (offset !== null) {\n window.scrollTo(0, offset);\n }\n });\n};\n\nexports.shouldUpdateScroll = function (_ref) {\n var location = _ref.routerProps.location;\n var offset = getTargetOffset(location.hash);\n return offset !== null ? [0, offset] : true;\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;","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","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","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPrimitive = require('../internals/to-primitive');\n\nvar nativeDefineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","\"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 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\", (0, _gatsby.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","\"use strict\";\n\nexports.DEFAULT_OPTIONS = {\n maxWidth: 650,\n wrapperStyle: \"\",\n backgroundColor: \"white\",\n linkImagesToOriginal: true,\n showCaptions: false,\n markdownCaptions: false,\n withWebp: false,\n tracedSVG: false,\n loading: \"lazy\",\n disableBgImageOnAlpha: false,\n disableBgImage: false\n};\nexports.EMPTY_ALT = \"GATSBY_EMPTY_ALT\";\nexports.imageClass = \"gatsby-resp-image-image\";\nexports.imageWrapperClass = \"gatsby-resp-image-wrapper\";\nexports.imageBackgroundClass = \"gatsby-resp-image-background-image\";","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;","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","\"use strict\";\n\nvar _require = require(\"./constants\"),\n DEFAULT_OPTIONS = _require.DEFAULT_OPTIONS,\n imageClass = _require.imageClass,\n imageBackgroundClass = _require.imageBackgroundClass,\n imageWrapperClass = _require.imageWrapperClass;\n\nexports.onRouteUpdate = function (apiCallbackContext, pluginOptions) {\n var options = Object.assign({}, DEFAULT_OPTIONS, pluginOptions);\n var imageWrappers = document.querySelectorAll(\".\" + imageWrapperClass); // https://css-tricks.com/snippets/javascript/loop-queryselectorall-matches/\n // for cross-browser looping through NodeList without polyfills\n\n var _loop = function _loop(i) {\n var imageWrapper = imageWrappers[i];\n var backgroundElement = imageWrapper.querySelector(\".\" + imageBackgroundClass);\n var imageElement = imageWrapper.querySelector(\".\" + imageClass);\n\n var onImageLoad = function onImageLoad() {\n backgroundElement.style.transition = \"opacity 0.5s 0.5s\";\n imageElement.style.transition = \"opacity 0.5s\";\n onImageComplete();\n };\n\n var onImageComplete = function onImageComplete() {\n backgroundElement.style.opacity = 0;\n imageElement.style.opacity = 1;\n imageElement.style.color = \"inherit\";\n imageElement.style.boxShadow = \"inset 0px 0px 0px 400px \" + options.backgroundColor;\n imageElement.removeEventListener(\"load\", onImageLoad);\n imageElement.removeEventListener(\"error\", onImageComplete);\n };\n\n imageElement.style.opacity = 0;\n imageElement.addEventListener(\"load\", onImageLoad);\n imageElement.addEventListener(\"error\", onImageComplete);\n\n if (imageElement.complete) {\n onImageComplete();\n }\n };\n\n for (var i = 0; i < imageWrappers.length; i++) {\n _loop(i);\n }\n};","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\n\nvar defineProperty = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function (it) { throw it; };\n\nmodule.exports = function (METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !DESCRIPTORS) return true;\n var O = { length: -1 };\n\n if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });\n else O[1] = 1;\n\n method.call(O, argument0, argument1);\n });\n};\n","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","/**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n;\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like environments that support module.exports,\n * like Node.\n */\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n factory()(root.lunr);\n }\n})(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return function (lunr) {\n // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript\n // (c) 2008 Taku Kudo \n // TinySegmenter is freely distributable under the terms of a new BSD licence.\n // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt\n function TinySegmenter() {\n var patterns = {\n \"[一二三四五六七八九十百千万億兆]\": \"M\",\n \"[一-龠々〆ヵヶ]\": \"H\",\n \"[ぁ-ん]\": \"I\",\n \"[ァ-ヴーア-ン゙ー]\": \"K\",\n \"[a-zA-Za-zA-Z]\": \"A\",\n \"[0-90-9]\": \"N\"\n };\n this.chartype_ = [];\n\n for (var i in patterns) {\n var regexp = new RegExp(i);\n this.chartype_.push([regexp, patterns[i]]);\n }\n\n this.BIAS__ = -332;\n this.BC1__ = {\n \"HH\": 6,\n \"II\": 2461,\n \"KH\": 406,\n \"OH\": -1378\n };\n this.BC2__ = {\n \"AA\": -3267,\n \"AI\": 2744,\n \"AN\": -878,\n \"HH\": -4070,\n \"HM\": -1711,\n \"HN\": 4012,\n \"HO\": 3761,\n \"IA\": 1327,\n \"IH\": -1184,\n \"II\": -1332,\n \"IK\": 1721,\n \"IO\": 5492,\n \"KI\": 3831,\n \"KK\": -8741,\n \"MH\": -3132,\n \"MK\": 3334,\n \"OO\": -2920\n };\n this.BC3__ = {\n \"HH\": 996,\n \"HI\": 626,\n \"HK\": -721,\n \"HN\": -1307,\n \"HO\": -836,\n \"IH\": -301,\n \"KK\": 2762,\n \"MK\": 1079,\n \"MM\": 4034,\n \"OA\": -1652,\n \"OH\": 266\n };\n this.BP1__ = {\n \"BB\": 295,\n \"OB\": 304,\n \"OO\": -125,\n \"UB\": 352\n };\n this.BP2__ = {\n \"BO\": 60,\n \"OO\": -1762\n };\n this.BQ1__ = {\n \"BHH\": 1150,\n \"BHM\": 1521,\n \"BII\": -1158,\n \"BIM\": 886,\n \"BMH\": 1208,\n \"BNH\": 449,\n \"BOH\": -91,\n \"BOO\": -2597,\n \"OHI\": 451,\n \"OIH\": -296,\n \"OKA\": 1851,\n \"OKH\": -1020,\n \"OKK\": 904,\n \"OOO\": 2965\n };\n this.BQ2__ = {\n \"BHH\": 118,\n \"BHI\": -1159,\n \"BHM\": 466,\n \"BIH\": -919,\n \"BKK\": -1720,\n \"BKO\": 864,\n \"OHH\": -1139,\n \"OHM\": -181,\n \"OIH\": 153,\n \"UHI\": -1146\n };\n this.BQ3__ = {\n \"BHH\": -792,\n \"BHI\": 2664,\n \"BII\": -299,\n \"BKI\": 419,\n \"BMH\": 937,\n \"BMM\": 8335,\n \"BNN\": 998,\n \"BOH\": 775,\n \"OHH\": 2174,\n \"OHM\": 439,\n \"OII\": 280,\n \"OKH\": 1798,\n \"OKI\": -793,\n \"OKO\": -2242,\n \"OMH\": -2402,\n \"OOO\": 11699\n };\n this.BQ4__ = {\n \"BHH\": -3895,\n \"BIH\": 3761,\n \"BII\": -4654,\n \"BIK\": 1348,\n \"BKK\": -1806,\n \"BMI\": -3385,\n \"BOO\": -12396,\n \"OAH\": 926,\n \"OHH\": 266,\n \"OHK\": -2036,\n \"ONN\": -973\n };\n this.BW1__ = {\n \",と\": 660,\n \",同\": 727,\n \"B1あ\": 1404,\n \"B1同\": 542,\n \"、と\": 660,\n \"、同\": 727,\n \"」と\": 1682,\n \"あっ\": 1505,\n \"いう\": 1743,\n \"いっ\": -2055,\n \"いる\": 672,\n \"うし\": -4817,\n \"うん\": 665,\n \"から\": 3472,\n \"がら\": 600,\n \"こう\": -790,\n \"こと\": 2083,\n \"こん\": -1262,\n \"さら\": -4143,\n \"さん\": 4573,\n \"した\": 2641,\n \"して\": 1104,\n \"すで\": -3399,\n \"そこ\": 1977,\n \"それ\": -871,\n \"たち\": 1122,\n \"ため\": 601,\n \"った\": 3463,\n \"つい\": -802,\n \"てい\": 805,\n \"てき\": 1249,\n \"でき\": 1127,\n \"です\": 3445,\n \"では\": 844,\n \"とい\": -4915,\n \"とみ\": 1922,\n \"どこ\": 3887,\n \"ない\": 5713,\n \"なっ\": 3015,\n \"など\": 7379,\n \"なん\": -1113,\n \"にし\": 2468,\n \"には\": 1498,\n \"にも\": 1671,\n \"に対\": -912,\n \"の一\": -501,\n \"の中\": 741,\n \"ませ\": 2448,\n \"まで\": 1711,\n \"まま\": 2600,\n \"まる\": -2155,\n \"やむ\": -1947,\n \"よっ\": -2565,\n \"れた\": 2369,\n \"れで\": -913,\n \"をし\": 1860,\n \"を見\": 731,\n \"亡く\": -1886,\n \"京都\": 2558,\n \"取り\": -2784,\n \"大き\": -2604,\n \"大阪\": 1497,\n \"平方\": -2314,\n \"引き\": -1336,\n \"日本\": -195,\n \"本当\": -2423,\n \"毎日\": -2113,\n \"目指\": -724,\n \"B1あ\": 1404,\n \"B1同\": 542,\n \"」と\": 1682\n };\n this.BW2__ = {\n \"..\": -11822,\n \"11\": -669,\n \"――\": -5730,\n \"−−\": -13175,\n \"いう\": -1609,\n \"うか\": 2490,\n \"かし\": -1350,\n \"かも\": -602,\n \"から\": -7194,\n \"かれ\": 4612,\n \"がい\": 853,\n \"がら\": -3198,\n \"きた\": 1941,\n \"くな\": -1597,\n \"こと\": -8392,\n \"この\": -4193,\n \"させ\": 4533,\n \"され\": 13168,\n \"さん\": -3977,\n \"しい\": -1819,\n \"しか\": -545,\n \"した\": 5078,\n \"して\": 972,\n \"しな\": 939,\n \"その\": -3744,\n \"たい\": -1253,\n \"たた\": -662,\n \"ただ\": -3857,\n \"たち\": -786,\n \"たと\": 1224,\n \"たは\": -939,\n \"った\": 4589,\n \"って\": 1647,\n \"っと\": -2094,\n \"てい\": 6144,\n \"てき\": 3640,\n \"てく\": 2551,\n \"ては\": -3110,\n \"ても\": -3065,\n \"でい\": 2666,\n \"でき\": -1528,\n \"でし\": -3828,\n \"です\": -4761,\n \"でも\": -4203,\n \"とい\": 1890,\n \"とこ\": -1746,\n \"とと\": -2279,\n \"との\": 720,\n \"とみ\": 5168,\n \"とも\": -3941,\n \"ない\": -2488,\n \"なが\": -1313,\n \"など\": -6509,\n \"なの\": 2614,\n \"なん\": 3099,\n \"にお\": -1615,\n \"にし\": 2748,\n \"にな\": 2454,\n \"によ\": -7236,\n \"に対\": -14943,\n \"に従\": -4688,\n \"に関\": -11388,\n \"のか\": 2093,\n \"ので\": -7059,\n \"のに\": -6041,\n \"のの\": -6125,\n \"はい\": 1073,\n \"はが\": -1033,\n \"はず\": -2532,\n \"ばれ\": 1813,\n \"まし\": -1316,\n \"まで\": -6621,\n \"まれ\": 5409,\n \"めて\": -3153,\n \"もい\": 2230,\n \"もの\": -10713,\n \"らか\": -944,\n \"らし\": -1611,\n \"らに\": -1897,\n \"りし\": 651,\n \"りま\": 1620,\n \"れた\": 4270,\n \"れて\": 849,\n \"れば\": 4114,\n \"ろう\": 6067,\n \"われ\": 7901,\n \"を通\": -11877,\n \"んだ\": 728,\n \"んな\": -4115,\n \"一人\": 602,\n \"一方\": -1375,\n \"一日\": 970,\n \"一部\": -1051,\n \"上が\": -4479,\n \"会社\": -1116,\n \"出て\": 2163,\n \"分の\": -7758,\n \"同党\": 970,\n \"同日\": -913,\n \"大阪\": -2471,\n \"委員\": -1250,\n \"少な\": -1050,\n \"年度\": -8669,\n \"年間\": -1626,\n \"府県\": -2363,\n \"手権\": -1982,\n \"新聞\": -4066,\n \"日新\": -722,\n \"日本\": -7068,\n \"日米\": 3372,\n \"曜日\": -601,\n \"朝鮮\": -2355,\n \"本人\": -2697,\n \"東京\": -1543,\n \"然と\": -1384,\n \"社会\": -1276,\n \"立て\": -990,\n \"第に\": -1612,\n \"米国\": -4268,\n \"11\": -669\n };\n this.BW3__ = {\n \"あた\": -2194,\n \"あり\": 719,\n \"ある\": 3846,\n \"い.\": -1185,\n \"い。\": -1185,\n \"いい\": 5308,\n \"いえ\": 2079,\n \"いく\": 3029,\n \"いた\": 2056,\n \"いっ\": 1883,\n \"いる\": 5600,\n \"いわ\": 1527,\n \"うち\": 1117,\n \"うと\": 4798,\n \"えと\": 1454,\n \"か.\": 2857,\n \"か。\": 2857,\n \"かけ\": -743,\n \"かっ\": -4098,\n \"かに\": -669,\n \"から\": 6520,\n \"かり\": -2670,\n \"が,\": 1816,\n \"が、\": 1816,\n \"がき\": -4855,\n \"がけ\": -1127,\n \"がっ\": -913,\n \"がら\": -4977,\n \"がり\": -2064,\n \"きた\": 1645,\n \"けど\": 1374,\n \"こと\": 7397,\n \"この\": 1542,\n \"ころ\": -2757,\n \"さい\": -714,\n \"さを\": 976,\n \"し,\": 1557,\n \"し、\": 1557,\n \"しい\": -3714,\n \"した\": 3562,\n \"して\": 1449,\n \"しな\": 2608,\n \"しま\": 1200,\n \"す.\": -1310,\n \"す。\": -1310,\n \"する\": 6521,\n \"ず,\": 3426,\n \"ず、\": 3426,\n \"ずに\": 841,\n \"そう\": 428,\n \"た.\": 8875,\n \"た。\": 8875,\n \"たい\": -594,\n \"たの\": 812,\n \"たり\": -1183,\n \"たる\": -853,\n \"だ.\": 4098,\n \"だ。\": 4098,\n \"だっ\": 1004,\n \"った\": -4748,\n \"って\": 300,\n \"てい\": 6240,\n \"てお\": 855,\n \"ても\": 302,\n \"です\": 1437,\n \"でに\": -1482,\n \"では\": 2295,\n \"とう\": -1387,\n \"とし\": 2266,\n \"との\": 541,\n \"とも\": -3543,\n \"どう\": 4664,\n \"ない\": 1796,\n \"なく\": -903,\n \"など\": 2135,\n \"に,\": -1021,\n \"に、\": -1021,\n \"にし\": 1771,\n \"にな\": 1906,\n \"には\": 2644,\n \"の,\": -724,\n \"の、\": -724,\n \"の子\": -1000,\n \"は,\": 1337,\n \"は、\": 1337,\n \"べき\": 2181,\n \"まし\": 1113,\n \"ます\": 6943,\n \"まっ\": -1549,\n \"まで\": 6154,\n \"まれ\": -793,\n \"らし\": 1479,\n \"られ\": 6820,\n \"るる\": 3818,\n \"れ,\": 854,\n \"れ、\": 854,\n \"れた\": 1850,\n \"れて\": 1375,\n \"れば\": -3246,\n \"れる\": 1091,\n \"われ\": -605,\n \"んだ\": 606,\n \"んで\": 798,\n \"カ月\": 990,\n \"会議\": 860,\n \"入り\": 1232,\n \"大会\": 2217,\n \"始め\": 1681,\n \"市\": 965,\n \"新聞\": -5055,\n \"日,\": 974,\n \"日、\": 974,\n \"社会\": 2024,\n \"カ月\": 990\n };\n this.TC1__ = {\n \"AAA\": 1093,\n \"HHH\": 1029,\n \"HHM\": 580,\n \"HII\": 998,\n \"HOH\": -390,\n \"HOM\": -331,\n \"IHI\": 1169,\n \"IOH\": -142,\n \"IOI\": -1015,\n \"IOM\": 467,\n \"MMH\": 187,\n \"OOI\": -1832\n };\n this.TC2__ = {\n \"HHO\": 2088,\n \"HII\": -1023,\n \"HMM\": -1154,\n \"IHI\": -1965,\n \"KKH\": 703,\n \"OII\": -2649\n };\n this.TC3__ = {\n \"AAA\": -294,\n \"HHH\": 346,\n \"HHI\": -341,\n \"HII\": -1088,\n \"HIK\": 731,\n \"HOH\": -1486,\n \"IHH\": 128,\n \"IHI\": -3041,\n \"IHO\": -1935,\n \"IIH\": -825,\n \"IIM\": -1035,\n \"IOI\": -542,\n \"KHH\": -1216,\n \"KKA\": 491,\n \"KKH\": -1217,\n \"KOK\": -1009,\n \"MHH\": -2694,\n \"MHM\": -457,\n \"MHO\": 123,\n \"MMH\": -471,\n \"NNH\": -1689,\n \"NNO\": 662,\n \"OHO\": -3393\n };\n this.TC4__ = {\n \"HHH\": -203,\n \"HHI\": 1344,\n \"HHK\": 365,\n \"HHM\": -122,\n \"HHN\": 182,\n \"HHO\": 669,\n \"HIH\": 804,\n \"HII\": 679,\n \"HOH\": 446,\n \"IHH\": 695,\n \"IHO\": -2324,\n \"IIH\": 321,\n \"III\": 1497,\n \"IIO\": 656,\n \"IOO\": 54,\n \"KAK\": 4845,\n \"KKA\": 3386,\n \"KKK\": 3065,\n \"MHH\": -405,\n \"MHI\": 201,\n \"MMH\": -241,\n \"MMM\": 661,\n \"MOM\": 841\n };\n this.TQ1__ = {\n \"BHHH\": -227,\n \"BHHI\": 316,\n \"BHIH\": -132,\n \"BIHH\": 60,\n \"BIII\": 1595,\n \"BNHH\": -744,\n \"BOHH\": 225,\n \"BOOO\": -908,\n \"OAKK\": 482,\n \"OHHH\": 281,\n \"OHIH\": 249,\n \"OIHI\": 200,\n \"OIIH\": -68\n };\n this.TQ2__ = {\n \"BIHH\": -1401,\n \"BIII\": -1033,\n \"BKAK\": -543,\n \"BOOO\": -5591\n };\n this.TQ3__ = {\n \"BHHH\": 478,\n \"BHHM\": -1073,\n \"BHIH\": 222,\n \"BHII\": -504,\n \"BIIH\": -116,\n \"BIII\": -105,\n \"BMHI\": -863,\n \"BMHM\": -464,\n \"BOMH\": 620,\n \"OHHH\": 346,\n \"OHHI\": 1729,\n \"OHII\": 997,\n \"OHMH\": 481,\n \"OIHH\": 623,\n \"OIIH\": 1344,\n \"OKAK\": 2792,\n \"OKHH\": 587,\n \"OKKA\": 679,\n \"OOHH\": 110,\n \"OOII\": -685\n };\n this.TQ4__ = {\n \"BHHH\": -721,\n \"BHHM\": -3604,\n \"BHII\": -966,\n \"BIIH\": -607,\n \"BIII\": -2181,\n \"OAAA\": -2763,\n \"OAKK\": 180,\n \"OHHH\": -294,\n \"OHHI\": 2446,\n \"OHHO\": 480,\n \"OHIH\": -1573,\n \"OIHH\": 1935,\n \"OIHI\": -493,\n \"OIIH\": 626,\n \"OIII\": -4007,\n \"OKAK\": -8156\n };\n this.TW1__ = {\n \"につい\": -4681,\n \"東京都\": 2026\n };\n this.TW2__ = {\n \"ある程\": -2049,\n \"いった\": -1256,\n \"ころが\": -2434,\n \"しょう\": 3873,\n \"その後\": -4430,\n \"だって\": -1049,\n \"ていた\": 1833,\n \"として\": -4657,\n \"ともに\": -4517,\n \"もので\": 1882,\n \"一気に\": -792,\n \"初めて\": -1512,\n \"同時に\": -8097,\n \"大きな\": -1255,\n \"対して\": -2721,\n \"社会党\": -3216\n };\n this.TW3__ = {\n \"いただ\": -1734,\n \"してい\": 1314,\n \"として\": -4314,\n \"につい\": -5483,\n \"にとっ\": -5989,\n \"に当た\": -6247,\n \"ので,\": -727,\n \"ので、\": -727,\n \"のもの\": -600,\n \"れから\": -3752,\n \"十二月\": -2287\n };\n this.TW4__ = {\n \"いう.\": 8576,\n \"いう。\": 8576,\n \"からな\": -2348,\n \"してい\": 2958,\n \"たが,\": 1516,\n \"たが、\": 1516,\n \"ている\": 1538,\n \"という\": 1349,\n \"ました\": 5543,\n \"ません\": 1097,\n \"ようと\": -4258,\n \"よると\": 5865\n };\n this.UC1__ = {\n \"A\": 484,\n \"K\": 93,\n \"M\": 645,\n \"O\": -505\n };\n this.UC2__ = {\n \"A\": 819,\n \"H\": 1059,\n \"I\": 409,\n \"M\": 3987,\n \"N\": 5775,\n \"O\": 646\n };\n this.UC3__ = {\n \"A\": -1370,\n \"I\": 2311\n };\n this.UC4__ = {\n \"A\": -2643,\n \"H\": 1809,\n \"I\": -1032,\n \"K\": -3450,\n \"M\": 3565,\n \"N\": 3876,\n \"O\": 6646\n };\n this.UC5__ = {\n \"H\": 313,\n \"I\": -1238,\n \"K\": -799,\n \"M\": 539,\n \"O\": -831\n };\n this.UC6__ = {\n \"H\": -506,\n \"I\": -253,\n \"K\": 87,\n \"M\": 247,\n \"O\": -387\n };\n this.UP1__ = {\n \"O\": -214\n };\n this.UP2__ = {\n \"B\": 69,\n \"O\": 935\n };\n this.UP3__ = {\n \"B\": 189\n };\n this.UQ1__ = {\n \"BH\": 21,\n \"BI\": -12,\n \"BK\": -99,\n \"BN\": 142,\n \"BO\": -56,\n \"OH\": -95,\n \"OI\": 477,\n \"OK\": 410,\n \"OO\": -2422\n };\n this.UQ2__ = {\n \"BH\": 216,\n \"BI\": 113,\n \"OK\": 1759\n };\n this.UQ3__ = {\n \"BA\": -479,\n \"BH\": 42,\n \"BI\": 1913,\n \"BK\": -7198,\n \"BM\": 3160,\n \"BN\": 6427,\n \"BO\": 14761,\n \"OI\": -827,\n \"ON\": -3212\n };\n this.UW1__ = {\n \",\": 156,\n \"、\": 156,\n \"「\": -463,\n \"あ\": -941,\n \"う\": -127,\n \"が\": -553,\n \"き\": 121,\n \"こ\": 505,\n \"で\": -201,\n \"と\": -547,\n \"ど\": -123,\n \"に\": -789,\n \"の\": -185,\n \"は\": -847,\n \"も\": -466,\n \"や\": -470,\n \"よ\": 182,\n \"ら\": -292,\n \"り\": 208,\n \"れ\": 169,\n \"を\": -446,\n \"ん\": -137,\n \"・\": -135,\n \"主\": -402,\n \"京\": -268,\n \"区\": -912,\n \"午\": 871,\n \"国\": -460,\n \"大\": 561,\n \"委\": 729,\n \"市\": -411,\n \"日\": -141,\n \"理\": 361,\n \"生\": -408,\n \"県\": -386,\n \"都\": -718,\n \"「\": -463,\n \"・\": -135\n };\n this.UW2__ = {\n \",\": -829,\n \"、\": -829,\n \"〇\": 892,\n \"「\": -645,\n \"」\": 3145,\n \"あ\": -538,\n \"い\": 505,\n \"う\": 134,\n \"お\": -502,\n \"か\": 1454,\n \"が\": -856,\n \"く\": -412,\n \"こ\": 1141,\n \"さ\": 878,\n \"ざ\": 540,\n \"し\": 1529,\n \"す\": -675,\n \"せ\": 300,\n \"そ\": -1011,\n \"た\": 188,\n \"だ\": 1837,\n \"つ\": -949,\n \"て\": -291,\n \"で\": -268,\n \"と\": -981,\n \"ど\": 1273,\n \"な\": 1063,\n \"に\": -1764,\n \"の\": 130,\n \"は\": -409,\n \"ひ\": -1273,\n \"べ\": 1261,\n \"ま\": 600,\n \"も\": -1263,\n \"や\": -402,\n \"よ\": 1639,\n \"り\": -579,\n \"る\": -694,\n \"れ\": 571,\n \"を\": -2516,\n \"ん\": 2095,\n \"ア\": -587,\n \"カ\": 306,\n \"キ\": 568,\n \"ッ\": 831,\n \"三\": -758,\n \"不\": -2150,\n \"世\": -302,\n \"中\": -968,\n \"主\": -861,\n \"事\": 492,\n \"人\": -123,\n \"会\": 978,\n \"保\": 362,\n \"入\": 548,\n \"初\": -3025,\n \"副\": -1566,\n \"北\": -3414,\n \"区\": -422,\n \"大\": -1769,\n \"天\": -865,\n \"太\": -483,\n \"子\": -1519,\n \"学\": 760,\n \"実\": 1023,\n \"小\": -2009,\n \"市\": -813,\n \"年\": -1060,\n \"強\": 1067,\n \"手\": -1519,\n \"揺\": -1033,\n \"政\": 1522,\n \"文\": -1355,\n \"新\": -1682,\n \"日\": -1815,\n \"明\": -1462,\n \"最\": -630,\n \"朝\": -1843,\n \"本\": -1650,\n \"東\": -931,\n \"果\": -665,\n \"次\": -2378,\n \"民\": -180,\n \"気\": -1740,\n \"理\": 752,\n \"発\": 529,\n \"目\": -1584,\n \"相\": -242,\n \"県\": -1165,\n \"立\": -763,\n \"第\": 810,\n \"米\": 509,\n \"自\": -1353,\n \"行\": 838,\n \"西\": -744,\n \"見\": -3874,\n \"調\": 1010,\n \"議\": 1198,\n \"込\": 3041,\n \"開\": 1758,\n \"間\": -1257,\n \"「\": -645,\n \"」\": 3145,\n \"ッ\": 831,\n \"ア\": -587,\n \"カ\": 306,\n \"キ\": 568\n };\n this.UW3__ = {\n \",\": 4889,\n \"1\": -800,\n \"−\": -1723,\n \"、\": 4889,\n \"々\": -2311,\n \"〇\": 5827,\n \"」\": 2670,\n \"〓\": -3573,\n \"あ\": -2696,\n \"い\": 1006,\n \"う\": 2342,\n \"え\": 1983,\n \"お\": -4864,\n \"か\": -1163,\n \"が\": 3271,\n \"く\": 1004,\n \"け\": 388,\n \"げ\": 401,\n \"こ\": -3552,\n \"ご\": -3116,\n \"さ\": -1058,\n \"し\": -395,\n \"す\": 584,\n \"せ\": 3685,\n \"そ\": -5228,\n \"た\": 842,\n \"ち\": -521,\n \"っ\": -1444,\n \"つ\": -1081,\n \"て\": 6167,\n \"で\": 2318,\n \"と\": 1691,\n \"ど\": -899,\n \"な\": -2788,\n \"に\": 2745,\n \"の\": 4056,\n \"は\": 4555,\n \"ひ\": -2171,\n \"ふ\": -1798,\n \"へ\": 1199,\n \"ほ\": -5516,\n \"ま\": -4384,\n \"み\": -120,\n \"め\": 1205,\n \"も\": 2323,\n \"や\": -788,\n \"よ\": -202,\n \"ら\": 727,\n \"り\": 649,\n \"る\": 5905,\n \"れ\": 2773,\n \"わ\": -1207,\n \"を\": 6620,\n \"ん\": -518,\n \"ア\": 551,\n \"グ\": 1319,\n \"ス\": 874,\n \"ッ\": -1350,\n \"ト\": 521,\n \"ム\": 1109,\n \"ル\": 1591,\n \"ロ\": 2201,\n \"ン\": 278,\n \"・\": -3794,\n \"一\": -1619,\n \"下\": -1759,\n \"世\": -2087,\n \"両\": 3815,\n \"中\": 653,\n \"主\": -758,\n \"予\": -1193,\n \"二\": 974,\n \"人\": 2742,\n \"今\": 792,\n \"他\": 1889,\n \"以\": -1368,\n \"低\": 811,\n \"何\": 4265,\n \"作\": -361,\n \"保\": -2439,\n \"元\": 4858,\n \"党\": 3593,\n \"全\": 1574,\n \"公\": -3030,\n \"六\": 755,\n \"共\": -1880,\n \"円\": 5807,\n \"再\": 3095,\n \"分\": 457,\n \"初\": 2475,\n \"別\": 1129,\n \"前\": 2286,\n \"副\": 4437,\n \"力\": 365,\n \"動\": -949,\n \"務\": -1872,\n \"化\": 1327,\n \"北\": -1038,\n \"区\": 4646,\n \"千\": -2309,\n \"午\": -783,\n \"協\": -1006,\n \"口\": 483,\n \"右\": 1233,\n \"各\": 3588,\n \"合\": -241,\n \"同\": 3906,\n \"和\": -837,\n \"員\": 4513,\n \"国\": 642,\n \"型\": 1389,\n \"場\": 1219,\n \"外\": -241,\n \"妻\": 2016,\n \"学\": -1356,\n \"安\": -423,\n \"実\": -1008,\n \"家\": 1078,\n \"小\": -513,\n \"少\": -3102,\n \"州\": 1155,\n \"市\": 3197,\n \"平\": -1804,\n \"年\": 2416,\n \"広\": -1030,\n \"府\": 1605,\n \"度\": 1452,\n \"建\": -2352,\n \"当\": -3885,\n \"得\": 1905,\n \"思\": -1291,\n \"性\": 1822,\n \"戸\": -488,\n \"指\": -3973,\n \"政\": -2013,\n \"教\": -1479,\n \"数\": 3222,\n \"文\": -1489,\n \"新\": 1764,\n \"日\": 2099,\n \"旧\": 5792,\n \"昨\": -661,\n \"時\": -1248,\n \"曜\": -951,\n \"最\": -937,\n \"月\": 4125,\n \"期\": 360,\n \"李\": 3094,\n \"村\": 364,\n \"東\": -805,\n \"核\": 5156,\n \"森\": 2438,\n \"業\": 484,\n \"氏\": 2613,\n \"民\": -1694,\n \"決\": -1073,\n \"法\": 1868,\n \"海\": -495,\n \"無\": 979,\n \"物\": 461,\n \"特\": -3850,\n \"生\": -273,\n \"用\": 914,\n \"町\": 1215,\n \"的\": 7313,\n \"直\": -1835,\n \"省\": 792,\n \"県\": 6293,\n \"知\": -1528,\n \"私\": 4231,\n \"税\": 401,\n \"立\": -960,\n \"第\": 1201,\n \"米\": 7767,\n \"系\": 3066,\n \"約\": 3663,\n \"級\": 1384,\n \"統\": -4229,\n \"総\": 1163,\n \"線\": 1255,\n \"者\": 6457,\n \"能\": 725,\n \"自\": -2869,\n \"英\": 785,\n \"見\": 1044,\n \"調\": -562,\n \"財\": -733,\n \"費\": 1777,\n \"車\": 1835,\n \"軍\": 1375,\n \"込\": -1504,\n \"通\": -1136,\n \"選\": -681,\n \"郎\": 1026,\n \"郡\": 4404,\n \"部\": 1200,\n \"金\": 2163,\n \"長\": 421,\n \"開\": -1432,\n \"間\": 1302,\n \"関\": -1282,\n \"雨\": 2009,\n \"電\": -1045,\n \"非\": 2066,\n \"駅\": 1620,\n \"1\": -800,\n \"」\": 2670,\n \"・\": -3794,\n \"ッ\": -1350,\n \"ア\": 551,\n \"グ\": 1319,\n \"ス\": 874,\n \"ト\": 521,\n \"ム\": 1109,\n \"ル\": 1591,\n \"ロ\": 2201,\n \"ン\": 278\n };\n this.UW4__ = {\n \",\": 3930,\n \".\": 3508,\n \"―\": -4841,\n \"、\": 3930,\n \"。\": 3508,\n \"〇\": 4999,\n \"「\": 1895,\n \"」\": 3798,\n \"〓\": -5156,\n \"あ\": 4752,\n \"い\": -3435,\n \"う\": -640,\n \"え\": -2514,\n \"お\": 2405,\n \"か\": 530,\n \"が\": 6006,\n \"き\": -4482,\n \"ぎ\": -3821,\n \"く\": -3788,\n \"け\": -4376,\n \"げ\": -4734,\n \"こ\": 2255,\n \"ご\": 1979,\n \"さ\": 2864,\n \"し\": -843,\n \"じ\": -2506,\n \"す\": -731,\n \"ず\": 1251,\n \"せ\": 181,\n \"そ\": 4091,\n \"た\": 5034,\n \"だ\": 5408,\n \"ち\": -3654,\n \"っ\": -5882,\n \"つ\": -1659,\n \"て\": 3994,\n \"で\": 7410,\n \"と\": 4547,\n \"な\": 5433,\n \"に\": 6499,\n \"ぬ\": 1853,\n \"ね\": 1413,\n \"の\": 7396,\n \"は\": 8578,\n \"ば\": 1940,\n \"ひ\": 4249,\n \"び\": -4134,\n \"ふ\": 1345,\n \"へ\": 6665,\n \"べ\": -744,\n \"ほ\": 1464,\n \"ま\": 1051,\n \"み\": -2082,\n \"む\": -882,\n \"め\": -5046,\n \"も\": 4169,\n \"ゃ\": -2666,\n \"や\": 2795,\n \"ょ\": -1544,\n \"よ\": 3351,\n \"ら\": -2922,\n \"り\": -9726,\n \"る\": -14896,\n \"れ\": -2613,\n \"ろ\": -4570,\n \"わ\": -1783,\n \"を\": 13150,\n \"ん\": -2352,\n \"カ\": 2145,\n \"コ\": 1789,\n \"セ\": 1287,\n \"ッ\": -724,\n \"ト\": -403,\n \"メ\": -1635,\n \"ラ\": -881,\n \"リ\": -541,\n \"ル\": -856,\n \"ン\": -3637,\n \"・\": -4371,\n \"ー\": -11870,\n \"一\": -2069,\n \"中\": 2210,\n \"予\": 782,\n \"事\": -190,\n \"井\": -1768,\n \"人\": 1036,\n \"以\": 544,\n \"会\": 950,\n \"体\": -1286,\n \"作\": 530,\n \"側\": 4292,\n \"先\": 601,\n \"党\": -2006,\n \"共\": -1212,\n \"内\": 584,\n \"円\": 788,\n \"初\": 1347,\n \"前\": 1623,\n \"副\": 3879,\n \"力\": -302,\n \"動\": -740,\n \"務\": -2715,\n \"化\": 776,\n \"区\": 4517,\n \"協\": 1013,\n \"参\": 1555,\n \"合\": -1834,\n \"和\": -681,\n \"員\": -910,\n \"器\": -851,\n \"回\": 1500,\n \"国\": -619,\n \"園\": -1200,\n \"地\": 866,\n \"場\": -1410,\n \"塁\": -2094,\n \"士\": -1413,\n \"多\": 1067,\n \"大\": 571,\n \"子\": -4802,\n \"学\": -1397,\n \"定\": -1057,\n \"寺\": -809,\n \"小\": 1910,\n \"屋\": -1328,\n \"山\": -1500,\n \"島\": -2056,\n \"川\": -2667,\n \"市\": 2771,\n \"年\": 374,\n \"庁\": -4556,\n \"後\": 456,\n \"性\": 553,\n \"感\": 916,\n \"所\": -1566,\n \"支\": 856,\n \"改\": 787,\n \"政\": 2182,\n \"教\": 704,\n \"文\": 522,\n \"方\": -856,\n \"日\": 1798,\n \"時\": 1829,\n \"最\": 845,\n \"月\": -9066,\n \"木\": -485,\n \"来\": -442,\n \"校\": -360,\n \"業\": -1043,\n \"氏\": 5388,\n \"民\": -2716,\n \"気\": -910,\n \"沢\": -939,\n \"済\": -543,\n \"物\": -735,\n \"率\": 672,\n \"球\": -1267,\n \"生\": -1286,\n \"産\": -1101,\n \"田\": -2900,\n \"町\": 1826,\n \"的\": 2586,\n \"目\": 922,\n \"省\": -3485,\n \"県\": 2997,\n \"空\": -867,\n \"立\": -2112,\n \"第\": 788,\n \"米\": 2937,\n \"系\": 786,\n \"約\": 2171,\n \"経\": 1146,\n \"統\": -1169,\n \"総\": 940,\n \"線\": -994,\n \"署\": 749,\n \"者\": 2145,\n \"能\": -730,\n \"般\": -852,\n \"行\": -792,\n \"規\": 792,\n \"警\": -1184,\n \"議\": -244,\n \"谷\": -1000,\n \"賞\": 730,\n \"車\": -1481,\n \"軍\": 1158,\n \"輪\": -1433,\n \"込\": -3370,\n \"近\": 929,\n \"道\": -1291,\n \"選\": 2596,\n \"郎\": -4866,\n \"都\": 1192,\n \"野\": -1100,\n \"銀\": -2213,\n \"長\": 357,\n \"間\": -2344,\n \"院\": -2297,\n \"際\": -2604,\n \"電\": -878,\n \"領\": -1659,\n \"題\": -792,\n \"館\": -1984,\n \"首\": 1749,\n \"高\": 2120,\n \"「\": 1895,\n \"」\": 3798,\n \"・\": -4371,\n \"ッ\": -724,\n \"ー\": -11870,\n \"カ\": 2145,\n \"コ\": 1789,\n \"セ\": 1287,\n \"ト\": -403,\n \"メ\": -1635,\n \"ラ\": -881,\n \"リ\": -541,\n \"ル\": -856,\n \"ン\": -3637\n };\n this.UW5__ = {\n \",\": 465,\n \".\": -299,\n \"1\": -514,\n \"E2\": -32768,\n \"]\": -2762,\n \"、\": 465,\n \"。\": -299,\n \"「\": 363,\n \"あ\": 1655,\n \"い\": 331,\n \"う\": -503,\n \"え\": 1199,\n \"お\": 527,\n \"か\": 647,\n \"が\": -421,\n \"き\": 1624,\n \"ぎ\": 1971,\n \"く\": 312,\n \"げ\": -983,\n \"さ\": -1537,\n \"し\": -1371,\n \"す\": -852,\n \"だ\": -1186,\n \"ち\": 1093,\n \"っ\": 52,\n \"つ\": 921,\n \"て\": -18,\n \"で\": -850,\n \"と\": -127,\n \"ど\": 1682,\n \"な\": -787,\n \"に\": -1224,\n \"の\": -635,\n \"は\": -578,\n \"べ\": 1001,\n \"み\": 502,\n \"め\": 865,\n \"ゃ\": 3350,\n \"ょ\": 854,\n \"り\": -208,\n \"る\": 429,\n \"れ\": 504,\n \"わ\": 419,\n \"を\": -1264,\n \"ん\": 327,\n \"イ\": 241,\n \"ル\": 451,\n \"ン\": -343,\n \"中\": -871,\n \"京\": 722,\n \"会\": -1153,\n \"党\": -654,\n \"務\": 3519,\n \"区\": -901,\n \"告\": 848,\n \"員\": 2104,\n \"大\": -1296,\n \"学\": -548,\n \"定\": 1785,\n \"嵐\": -1304,\n \"市\": -2991,\n \"席\": 921,\n \"年\": 1763,\n \"思\": 872,\n \"所\": -814,\n \"挙\": 1618,\n \"新\": -1682,\n \"日\": 218,\n \"月\": -4353,\n \"査\": 932,\n \"格\": 1356,\n \"機\": -1508,\n \"氏\": -1347,\n \"田\": 240,\n \"町\": -3912,\n \"的\": -3149,\n \"相\": 1319,\n \"省\": -1052,\n \"県\": -4003,\n \"研\": -997,\n \"社\": -278,\n \"空\": -813,\n \"統\": 1955,\n \"者\": -2233,\n \"表\": 663,\n \"語\": -1073,\n \"議\": 1219,\n \"選\": -1018,\n \"郎\": -368,\n \"長\": 786,\n \"間\": 1191,\n \"題\": 2368,\n \"館\": -689,\n \"1\": -514,\n \"E2\": -32768,\n \"「\": 363,\n \"イ\": 241,\n \"ル\": 451,\n \"ン\": -343\n };\n this.UW6__ = {\n \",\": 227,\n \".\": 808,\n \"1\": -270,\n \"E1\": 306,\n \"、\": 227,\n \"。\": 808,\n \"あ\": -307,\n \"う\": 189,\n \"か\": 241,\n \"が\": -73,\n \"く\": -121,\n \"こ\": -200,\n \"じ\": 1782,\n \"す\": 383,\n \"た\": -428,\n \"っ\": 573,\n \"て\": -1014,\n \"で\": 101,\n \"と\": -105,\n \"な\": -253,\n \"に\": -149,\n \"の\": -417,\n \"は\": -236,\n \"も\": -206,\n \"り\": 187,\n \"る\": -135,\n \"を\": 195,\n \"ル\": -673,\n \"ン\": -496,\n \"一\": -277,\n \"中\": 201,\n \"件\": -800,\n \"会\": 624,\n \"前\": 302,\n \"区\": 1792,\n \"員\": -1212,\n \"委\": 798,\n \"学\": -960,\n \"市\": 887,\n \"広\": -695,\n \"後\": 535,\n \"業\": -697,\n \"相\": 753,\n \"社\": -507,\n \"福\": 974,\n \"空\": -822,\n \"者\": 1811,\n \"連\": 463,\n \"郎\": 1082,\n \"1\": -270,\n \"E1\": 306,\n \"ル\": -673,\n \"ン\": -496\n };\n return this;\n }\n\n TinySegmenter.prototype.ctype_ = function (str) {\n for (var i in this.chartype_) {\n if (str.match(this.chartype_[i][0])) {\n return this.chartype_[i][1];\n }\n }\n\n return \"O\";\n };\n\n TinySegmenter.prototype.ts_ = function (v) {\n if (v) {\n return v;\n }\n\n return 0;\n };\n\n TinySegmenter.prototype.segment = function (input) {\n if (input == null || input == undefined || input == \"\") {\n return [];\n }\n\n var result = [];\n var seg = [\"B3\", \"B2\", \"B1\"];\n var ctype = [\"O\", \"O\", \"O\"];\n var o = input.split(\"\");\n\n for (i = 0; i < o.length; ++i) {\n seg.push(o[i]);\n ctype.push(this.ctype_(o[i]));\n }\n\n seg.push(\"E1\");\n seg.push(\"E2\");\n seg.push(\"E3\");\n ctype.push(\"O\");\n ctype.push(\"O\");\n ctype.push(\"O\");\n var word = seg[3];\n var p1 = \"U\";\n var p2 = \"U\";\n var p3 = \"U\";\n\n for (var i = 4; i < seg.length - 3; ++i) {\n var score = this.BIAS__;\n var w1 = seg[i - 3];\n var w2 = seg[i - 2];\n var w3 = seg[i - 1];\n var w4 = seg[i];\n var w5 = seg[i + 1];\n var w6 = seg[i + 2];\n var c1 = ctype[i - 3];\n var c2 = ctype[i - 2];\n var c3 = ctype[i - 1];\n var c4 = ctype[i];\n var c5 = ctype[i + 1];\n var c6 = ctype[i + 2];\n score += this.ts_(this.UP1__[p1]);\n score += this.ts_(this.UP2__[p2]);\n score += this.ts_(this.UP3__[p3]);\n score += this.ts_(this.BP1__[p1 + p2]);\n score += this.ts_(this.BP2__[p2 + p3]);\n score += this.ts_(this.UW1__[w1]);\n score += this.ts_(this.UW2__[w2]);\n score += this.ts_(this.UW3__[w3]);\n score += this.ts_(this.UW4__[w4]);\n score += this.ts_(this.UW5__[w5]);\n score += this.ts_(this.UW6__[w6]);\n score += this.ts_(this.BW1__[w2 + w3]);\n score += this.ts_(this.BW2__[w3 + w4]);\n score += this.ts_(this.BW3__[w4 + w5]);\n score += this.ts_(this.TW1__[w1 + w2 + w3]);\n score += this.ts_(this.TW2__[w2 + w3 + w4]);\n score += this.ts_(this.TW3__[w3 + w4 + w5]);\n score += this.ts_(this.TW4__[w4 + w5 + w6]);\n score += this.ts_(this.UC1__[c1]);\n score += this.ts_(this.UC2__[c2]);\n score += this.ts_(this.UC3__[c3]);\n score += this.ts_(this.UC4__[c4]);\n score += this.ts_(this.UC5__[c5]);\n score += this.ts_(this.UC6__[c6]);\n score += this.ts_(this.BC1__[c2 + c3]);\n score += this.ts_(this.BC2__[c3 + c4]);\n score += this.ts_(this.BC3__[c4 + c5]);\n score += this.ts_(this.TC1__[c1 + c2 + c3]);\n score += this.ts_(this.TC2__[c2 + c3 + c4]);\n score += this.ts_(this.TC3__[c3 + c4 + c5]);\n score += this.ts_(this.TC4__[c4 + c5 + c6]); // score += this.ts_(this.TC5__[c4 + c5 + c6]); \n\n score += this.ts_(this.UQ1__[p1 + c1]);\n score += this.ts_(this.UQ2__[p2 + c2]);\n score += this.ts_(this.UQ3__[p3 + c3]);\n score += this.ts_(this.BQ1__[p2 + c2 + c3]);\n score += this.ts_(this.BQ2__[p2 + c3 + c4]);\n score += this.ts_(this.BQ3__[p3 + c2 + c3]);\n score += this.ts_(this.BQ4__[p3 + c3 + c4]);\n score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);\n score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);\n score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);\n score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);\n var p = \"O\";\n\n if (score > 0) {\n result.push(word);\n word = \"\";\n p = \"B\";\n }\n\n p1 = p2;\n p2 = p3;\n p3 = p;\n word += seg[i];\n }\n\n result.push(word);\n return result;\n };\n\n lunr.TinySegmenter = TinySegmenter;\n };\n});","var isObject = require('../internals/is-object');\n\n// `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","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","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (key, value) {\n try {\n createNonEnumerableProperty(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n"],"sourceRoot":""}