{"version":3,"mappings":"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,GAAU,KAJbC,UAAe,YACvBD,GAAQE,gBAAqB,kBAC7BF,GAAQG,gBAAqB,kBAC7BH,GAAQP,eAAoB,wBAL5BO,GACH,IAAUA,GADA,GAOPI,GAAYJ,GAKZK,GAAK,WACT,OAAWA,GAKRA,KAAUA,GAAQ,KAJXC,KAAU,OAChBD,GAAME,OAAY,SAClBF,GAAMG,UAAe,YACrBH,GAAMI,KAAU,OALhBJ,GACH,IAAUA,GADF,GAOLK,GAAUL,GAOVM,GAAmB,CACnBZ,GAASlB,UACTkB,GAASjB,UACTiB,GAAShB,UACTgB,GAASf,UACTe,GAASd,UACTc,GAASb,UACTa,GAASZ,UACTY,GAASX,QACTW,GAASV,QACTU,GAASR,GACTQ,GAASP,MACTO,GAASN,eACTM,GAASL,eACTK,GAASJ,OAKTiB,GAAmB,CACnBb,GAASlB,UACTkB,GAASjB,UACTiB,GAAShB,UACTgB,GAASf,UACTe,GAASd,UACTc,GAASb,UACTa,GAASZ,UACTY,GAASX,QACTW,GAASV,QACTU,GAASR,GACTQ,GAASP,MACTO,GAASN,eACTM,GAASL,gBAETmB,GAAe,CACfd,GAASJ,MACTI,GAASH,UACTG,GAASF,WACTE,GAASD,mBAKTgB,GAAc,CAACf,GAASR,GAAIQ,GAASN,eAAgBM,GAASL,gBAM9DqB,KAAcrC,GAAK,IAChBqB,GAASX,SAAW,CAACW,GAAST,WACjCZ,GAAGqB,GAASV,SAAW,CAACU,GAAST,WACjCZ,GAAGqB,GAAST,WAAasB,GACzBlC,GAAGqB,GAASP,OAAS,CAACO,GAASlB,WAC/BH,GAAGqB,GAASJ,OAAS,CAACI,GAASH,WAC/BlB,GAAGqB,GAASH,WAAa,CAACG,GAASF,WAAYE,GAASD,mBACxDpB,GAAGqB,GAASF,YAAc,CAACE,GAASlB,WACpCH,GAAGqB,GAASD,mBAAqB,CAACC,GAASlB,WAC3CH,IAIAsC,GAAkB,CAClBjB,GAASlB,UACTkB,GAASjB,UACTiB,GAAShB,UACTgB,GAASf,UACTe,GAASd,UACTc,GAASb,UACTa,GAASZ,WAKT8B,GAAgB,CAChBlB,GAASnB,SACTmB,GAAS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GAAgBG,OAAQ35D,GAAiB02D,OAAQ32D,GAAU02D,YAC7E,UAEC,IACD57B,EAAYygC,GAAW,GACvB,UACC,KACDzgC,EAAYygC,GAAW,GACvB,UAEC,IACDzgC,EAAYygC,GAAW,GAAG,GAC1B,UAEC,IACDzgC,EAAYugC,GAAWpC,GAAS17D,KAAM,GACtC,UACC,KACDu9B,EAAYugC,GAAWpC,GAAS17D,KAAM,GACtC,UAEC,QACA,KACDu9B,EAAYugC,GAAWpC,GAASO,IAAK,GACrC,UACC,MACD1+B,EACIsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB22D,YAAa52D,GAAU02D,YAChF,UACC,OACD57B,EAAYsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB42D,KAAM72D,GAAU02D,YACjF,UACC,QACD57B,EACIsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB02D,OAAQ32D,GAAU02D,YAC3E,UACC,SACD57B,EAAYsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB62D,MAAO92D,GAAU02D,YAClF,UAEC,QACA,SACA,MACD57B,EAAYsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB22D,aACjE,UACC,OACD97B,EAAYsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB42D,MACjE,UACC,QACD/7B,EAAYsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB02D,QACjE,UACC,SACD77B,EAAYsgC,GAAc3B,GAAgBE,KAAM15D,GAAiB62D,OACjE,UAEC,QACA,SACA,MACDh8B,EAAYsgC,GAAc3B,GAAgBC,WAAYz5D,GAAiB22D,aACvE,UACC,OACD97B,EAAYsgC,GAAc3B,GAAgBC,WAAYz5D,GAAiB42D,MACvE,UACC,QACD/7B,EAAYsgC,GAAc3B,GAAgBC,WAAYz5D,GAAiB02D,QACvE,UAEC,QACA,SACA,MACD77B,EAAYsgC,GAAc3B,GAAgBC,WAAYz5D,GAAiB22D,YAAa52D,GAAU02D,YAAY,GAC1G,UACC,OACD57B,EAAYsgC,GAAc3B,GAAgBC,WAAYz5D,GAAiB42D,KAAM72D,GAAU02D,YAAY,GACnG,UACC,QACD57B,EAAYsg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","names":["_inputs","document","querySelectorAll","Array","prototype","slice","call","map","input","inputTagName","tagName","toLowerCase","inputType","type","inputId","id","inputName","name","inputValue","value","inputChildNodes","childNodes","inputSelected","Boolean","selected","elementStore","tag","checked","options","option","i","$inputs","inputs","forEach","store","length","getAttribute","dispatchEvent","CustomEvent","detail","selector","element","body","querySelector","select_1","storedOption","j","Object","exports","__getInputValues","__setInputValues","val","el","main","before","after","identity","readyState","addEventListener","removeEventListener","__domReadyHandler","cmps","components","componentNode","newNode","createElement","parentNode","currentDisplay","style","display","insertBefore","removeChild","e","removeOldHost","docHead","head","_styles","filter","innerText","indexOf","getInputValues","setInputValues","OnInit","OnStatus","OnCheck","OnDecline","OnDestroy","AfterDestroy","MODULE_REF","MODULE","CONFIG","MODULE_CONFIG","hot","accept","instance","data","apply","status","check","err","outdatedModules","decline","dependencies","dispose","destroy","m","p","hasOwnProperty","__export","require","fn","module","__assign","assign","t","s","n","arguments","this","matchHtmlRegExp","escapeHtml_1","string","str","match","exec","escape","html","index","lastIndex","charCodeAt","substring","commonjsGlobal","globalThis","window","global","self","richTextTypes_es5","defineProperty","commonjsGlobal$1","version","it","Math","global_1","Function","fails","error","descriptors","get","functionCall","bind","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","objectPropertyIsEnumerable","f","V","descriptor","enumerable","createPropertyDescriptor","bitmap","configurable","writable","FunctionPrototype","call$1","callBind","functionUncurryThis","toString","stringSlice","Object$1","split","indexedObject","TypeError","requireObjectCoercible","undefined","toIndexedObject","isCallable","argument","isObject","aFunction","getBuiltIn","namespace","method","objectIsPrototypeOf","isPrototypeOf","engineUserAgent","process","Deno","versions","v8","engineV8Version","nativeSymbol","getOwnPropertySymbols","symbol","Symbol","String","sham","useSymbolAsUid","iterator","Object$2","isSymbol","$Symbol","String$1","TypeError$1","TypeError$2","setGlobal","key","SHARED","sharedStore","shared","createCommonjsModule","push","mode","copyright","Object$3","hasOwnProperty_1","hasOwn","toObject","postfix","random","toString$1","uid","WellKnownSymbolsStore","Symbol$1","symbolFor","for","createWellKnownSymbol","withoutSetter","wellKnownSymbol","description","TypeError$3","TO_PRIMITIVE","toPrimitive","pref","result","exoticToPrim","P","func","tryToString","aCallable","getMethod","valueOf","ordinaryToPrimitive","toPropertyKey","document$1","EXISTS","documentCreateElement","ie8DomDefine","a","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","String$2","TypeError$4","anObject","TypeError$5","$defineProperty","objectDefineProperty","Attributes","createNonEnumerableProperty","object","functionToString","inspectSource","set","has","WeakMap","nativeWeakMap","test","keys","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","TypeError$6","state","store$1","WeakMap$1","wmget","wmhas","wmset","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","FunctionPrototype$1","getDescriptor","EXISTS$1","functionName","PROPER","CONFIGURABLE","redefine","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","noTargetGet","replace","source","join","ceil","floor","toIntegerOrInfinity","number","max","min","min$1","createMethod","IS_INCLUDES","$this","fromIndex","obj","toLength","lengthOfArrayLike","integer","toAbsoluteIndex","arrayIncludes","includes","objectKeysInternal","names","enumBugKeys","hiddenKeys$1","concat","objectGetOwnPropertyNames","getOwnPropertyNames","objectGetOwnPropertySymbols","ownKeys","copyConstructorProperties","target","replacement","isForced","feature","detection","normalize","POLYFILL","NATIVE","isForced_1","getOwnPropertyDescriptor$1","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","Vt","Wn","forced","objectKeys","push$1","createMethod$1","TO_ENTRIES","$values","values","activeXDocument","objectDefineProperties","defineProperties","Properties","props","PROTOTYPE","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","domain","iframeDocument","iframe","appendChild","src","contentWindow","open","F","NullProtoObjectViaIFrame","objectCreate","create","UNSCOPABLES","ArrayPrototype","$includes","proto","CONSTRUCTOR","METHOD","_a","BLOCKS","DOCUMENT","PARAGRAPH","HEADING_1","HEADING_2","HEADING_3","HEADING_4","HEADING_5","HEADING_6","OL_LIST","UL_LIST","LIST_ITEM","HR","QUOTE","EMBEDDED_ENTRY","EMBEDDED_ASSET","TABLE","TABLE_ROW","TABLE_CELL","TABLE_HEADER_CELL","BLOCKS$1","INLINES","HYPERLINK","ENTRY_HYPERLINK","ASSET_HYPERLINK","INLINES$1","MARKS","BOLD","ITALIC","UNDERLINE","CODE","MARKS$1","TOP_LEVEL_BLOCKS","LIST_ITEM_BLOCKS","TABLE_BLOCKS","VOID_BLOCKS","CONTAINERS","TEXT_CONTAINERS","V1_NODE_TYPES","EMPTY_DOCUMENT","nodeType","marks","helpers","freeze","__proto__","isInline","node","isBlock","isText","x","__esModule","unwrapExports","_b","richTextTypes_es5_1","richTextTypes_es5_4","richTextTypes_es5_6","richTextTypes_es5_12","defaultNodeRenderers","next","defaultInline","attributeValue","uri","defaultMarkRenderers","text","sys","nodes","renderNode","renderMark","nodeValue","reduce","mark","nodeListToHtmlString","nodeToHtmlString","richTextDocument","gn","Mn","raw","eventName","resultSelector","isFunction","fromEvent","pipe","isArray","args","Observable","setupSubscription","subscriber","sourceObj","handler","unsubscribe","isEventTarget","on","off","isJQueryStyleEventEmitter","addListener","removeListener","isNodeStyleEventEmitter","len","add","period","closed","complete","schedule","RaceOperator","subscribe","RaceSubscriber","l","destination","h","hasFirst","observables","subscriptions","observable","subscription","subscribeToResult","_outerValue","innerValue","outerIndex","remove","OuterSubscriber","noop","pop","fromArray","lift","ZipOperator","ZipSubscriber","C","y","iterators","active","StaticArrayIterator","Symbol_iterator","StaticIterator","ZipBufferIterator","stillUnsubscribed","hasValue","shouldComplete","hasCompleted","done","_tryresultSelector","Subscriber","nextResult","array","parent","buffer","isComplete","shift","notifyInactive","checkIterators","innerSubscribe","SimpleInnerSubscriber","SimpleOuterSubscriber","project","WithLatestFromOperator","WithLatestFromSubscriber","toRespond","found","splice","_tryProject","_c3","_c10","_c11","rf","ctx","ɵngcc0","currentMonth_r9","currentMonth","selected_r10","disabled_r11","disabled","focused_r12","focused","date","month_r14","$implicit","ctx_r16","i18n","getMonthLabel","firstDate","NgbDatepicker_ng_template_2_div_0_div_1_Template","ctx_r13","navigation","displayMonths","NgbDatepicker_ng_template_2_div_0_Template","ctx_r3","model","months","_r19","$event","onNavigateEvent","onNavigateDateSelect","ctx_r4","prevDisabled","nextDisabled","selectBoxes","ctx_r2","getWeekLabel","weekday_r4","NgbDatepickerMonth_div_0_div_1_Template","NgbDatepickerMonth_div_0_div_2_Template","ctx_r0","datepicker","showWeekNumbers","viewModel","weekdays","week_r5","ctx_r7","getWeekNumerals","NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template","day_r10","ctx_r11","dayTemplate","context","_r15","ctx_r14","doSelect","preventDefault","NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template","hidden","today","tabindex","ariaLabel","NgbDatepickerMonth_ng_template_1_div_0_div_1_Template","NgbDatepickerMonth_ng_template_1_div_0_div_2_Template","ctx_r6","days","NgbDatepickerMonth_ng_template_1_div_0_Template","collapsed","_r3","select","emit","years","NgbDatepickerNavigation_4_ng_template_0_div_0_Template","NgbDatepickerNavigation_4_ng_template_0_div_3_Template","month_r5","i_r6","NgbDatepickerNavigation_4_ng_template_0_Template","ctx_r1","_c20","_c21","_c22","m_r4","getMonthFullName","year","getMonthShortName","y_r5","getYearNumerals","_c31","parseInt","isFinite","className","getBoundingClientRect","Element","closest","matches","msMatchesSelector","webkitMatchesSelector","documentElement","contains","parentElement","NgbConfig","animation","ɵfac","ɵprov","i0","factory","token","providedIn","noopFn","runningTransitions","Map","ngbRunTransition","zone","startFn","running","runningTransition","EMPTY","run","transition$","delete","endFn","getComputedStyle","transitionProperty","of","observer","Subject","finishTransition$","stop$","endWith","transitionDurationMs","transitionDuration","parseFloat","transitionDelay","getTransitionDurationMs","runOutsideAngular","transitionEnd$","takeUntil","race","dueTime","periodOrScheduler","scheduler","isNumeric","Number","isScheduler","async","due","now","dispatch","timer","asObservable","NgbDate","month","day","isInteger","other","jsDate","getFullYear","getMonth","getDate","Date","isNaN","getTime","setFullYear","NgbCalendarGregorian","NgbCalendar","NGB_DATEPICKER_CALENDAR_FACTORY","toJSDate","checkMonth","expectedMonth","setMonth","setDate","fromJSDate","getNext","getDay","week","firstDayOfWeek","time","round","ɵNgbCalendarGregorian_BaseFactory","prev","equals","dateComparator","minDate","maxDate","markDisabled","calendar","daysPerWeek","getDaysPerWeek","firstMonthDate","dayOfWeek","getWeekday","getPrev","NgbDatepickerI18n","weekNumber","locale","NgbDatepickerI18nDefault","NGB_DATEPICKER_18N_FACTORY","_locale","_monthsShort","getLocaleMonthNames","FormStyle","TranslationWidth","_monthsFull","weekday","width","weekdaysStartingOnSunday","getLocaleDayNames","formatDate","LOCALE_ID","NgbDatepickerService","_calendar","_i18n","_VALIDATORS","dayTemplateData","_state","toInteger","focusVisible","toValidDate","isChangedDate","outsideDays","weekdayWidth","weekdaysVisible","_model$","_dateSelect$","lastDate","focusDate","selectedDate","patch","part","_nextState","focusedDate","isDateSelectable","emitEvent","getToday","isChangedMonth","defaultValue","ngbDate","from","isValid","struct","pe","Error","newState","_updateState","_patchContexts","weeks","startDate","checkMinBeforeMax","checkDateInRange","force","monthsToReuse","firstDates","_","reusedIndex","findIndex","calendarToday","getFirstViewDate","getWeeksPerMonth","weekObject","getWeekdayLabel","newDate","nextDate","getDayAriaLabel","contextUserData","dayObject","currentYear","getWeekNumber","buildMonth","buildMonths","yearChanged","monthChanged","start","numbers","generateSelectBoxYears","getMonths","generateSelectBoxMonths","prevDate","prevMonthDisabled","nextMonthDisabled","NavigationEvent","PREV","NEXT","NgbDatepickerConfig","NgbDateStructAdapter","NgbDateAdapter","NGB_DATEPICKER_DATE_ADAPTER_FACTORY","ɵNgbDateStructAdapter_BaseFactory","NgbDatepickerContent","templateRef","ɵdir","selectors","NgbDatepicker","_service","config","cd","_elementRef","_ngbDateAdapter","_ngZone","_controlValue","_destroyed$","_publicState","navigate","EventEmitter","dateSelect","onChange","onTouched","ut","dateSelect$","model$","oldDate","navigationPrevented","current","newSelectedDate","newFocusedDate","oldFocusedDate","toModel","focus","markForCheck","focusSelect","onStable","take","elementToFocus","u","nativeElement","focusIns$","_contentEl","focusOuts$","merge","relatedTarget","hasClassName","navigateTo","_defaultDayTemplate","changes","previousValue","currentValue","event","fromModel","ɵcmp","contentQueries","dirIndex","_t","contentTemplate","first","viewQuery","footerTemplate","outputs","exportAs","features","provide","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","decls","vars","consts","template","NgbDatepicker_ng_template_0_Template","NgbDatepicker_ng_template_2_Template","NgbDatepicker_ngb_datepicker_navigation_5_Template","NgbDatepicker_ng_template_8_Template","NgbDatepicker_ng_template_9_Template","_r2","directives","ɵngcc1","NgbDatepickerDayView","NgbDatepickerMonth","NgbDatepickerNavigation","styles","encapsulation","changeDetection","Key","Tab","Enter","Escape","Space","PageUp","PageDown","End","Home","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","NgbDatepickerKeyboardService","which","shiftKey","stopPropagation","_keyboardService","processKey","onDateSelect","hostAttrs","hostBindings","onKeyDown","NgbDatepickerMonth_div_0_Template","NgbDatepickerMonth_ng_template_1_Template","currentTarget","showSelect","$localize","mt","ln","Gt","un","onClickPrev","NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template","NgbDatepickerNavigation_4_Template","onClickNext","NgbDatepickerNavigationSelect","navigator","userAgent","maxTouchPoints","FOCUSABLE_ELEMENTS_SELECTOR","list","tabIndex","Positioning","prop","getAllStyles","getStyle","offsetParentEl","offsetParent","isStaticPositioned","elPosition","parentOffset","height","top","bottom","left","right","offset","clientTop","clientLeft","elBcr","viewportOffset","pageYOffset","pageXOffset","elOffset","offsetHeight","offsetWidth","hostElement","targetElement","placement","appendToBody","placementPrimary","De","placementSecondary","hostElPosition","position","targetElStyles","marginTop","marginBottom","marginLeft","marginRight","topPosition","leftPosition","transform","targetElBCR","windowHeight","innerHeight","clientHeight","windowWidth","innerWidth","clientWidth","hostVars","isMuted","attrs","getDayNumerals","_renderer","_month","_year","setProperty","monthSelect","yearSelect","ElementRef","Wt","ar","rn","En","changeMonth","NgbDatepickerNavigationSelect_option_2_Template","changeYear","NgbDatepickerNavigationSelect_option_5_Template","ɵngcc2","NgbDatepickerModule","ɵmod","ɵinj","imports","CommonModule","FormsModule","NgbModalConfig","_ngbConfig","backdrop","keyboard","_animation","ContentRef","viewRef","componentRef","ScrollBar","_document","_getWidth","_isPresent","_adjustBody","scrollbarWidth","userSetPaddingStyle","paddingRight","actualPadding","rect","measurer","i1","NgbModalBackdrop","_el","_zone","reflow","classList","backdropClass","NgbActiveModal","reason","NgbModalRef","_windowCmptRef","_contentRef","_backdropCmptRef","_beforeDismiss","_closed","_dismissed","_hidden","dismissEvent","dismiss","Promise","resolve","reject","_resolve","_reject","then","shown","_removeModalElements","_dismiss","windowTransition$","hide","backdropTransition$","location","zip","ModalDismissReasons","BACKDROP_CLICK","ESC","NgbModalWindow","_elRef","_closed$","_elWithFocus","activeElement","_show","_disableEventHandling","transitions$","_dialogEl","_restoreFocus","_enableEventHandling","_setFocus","requestAnimationFrame","defaultPrevented","_bumpBackdrop","preventClose","tap","switchMap","autoFocusable","firstFocusable","getFocusableBoundaryElements","elWithFocus","setTimeout","ariaLabelledBy","ariaDescribedBy","windowClass","centered","scrollable","size","modalDialogClass","ngContentSelectors","NgbModalStack","_applicationRef","_injector","_scrollBar","_rendererFactory","_activeWindowCmptHasChanged","_ariaHiddenValues","_backdropAttributes","_modalRefs","_windowAttributes","_windowCmpts","_activeInstances","activeWindowCmpt","stopFocusTrap$","refocusOnClick","lastFocusedElement$","withLatestFrom","tabEvent","focusedElement","Ct","last","arr","lastFocusedElement","ngbFocusTrap","_revertAriaHidden","_setAriaHidden","moduleCFR","contentInjector","containerEl","container","HTMLElement","isDefined","renderer","createRenderer","revertPaddingForScrollBar","compensate","removeBodyClass","removeClass","activeModal","contentRef","_getContentRef","injector","backdropCmptRef","_attachBackdrop","windowCmptRef","_attachWindowComponent","ngbModalRef","beforeDismiss","_registerModalRef","_registerWindowCmpt","_applyWindowOptions","addClass","_applyBackdropOptions","changeDetectorRef","detectChanges","resolveComponentFactory","attachView","hostView","windowInstance","optionName","backdropInstance","TemplateRef","_createFromTemplateRef","isString","_createFromString","_createFromComponent","createEmbeddedView","rootNodes","component","createTextNode","contentCmptFactory","modalContentInjector","Injector","providers","useValue","componentNativeEl","children","sibling","nodeName","setAttribute","removeAttribute","clear","unregisterModalRef","ngbWindowCmpt","onDestroy","NgbModal","_moduleCFR","_modalStack","_config","combinedOptions","activeInstances","dismissAll","hasOpenModals","NgbModalModule","InjectionToken","NgbTypeaheadModule","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","defaults","Cancel","onCanceled","requestData","requestHeaders","headers","responseType","cancelToken","signal","isFormData","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","responseHeaders","getAllResponseHeaders","response","responseText","statusText","toUpperCase","params","paramsSerializer","timeout","onloadend","onreadystatechange","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancel","abort","aborted","send","Axios","mergeConfig","axios","defaultConfig","extend","instanceConfig","createInstance","CancelToken","isCancel","VERSION","all","promises","spread","isAxiosError","message","__CANCEL__","executor","resolvePromise","promise","_listeners","onfulfilled","throwIfRequested","listener","c","InterceptorManager","dispatchRequest","validator","validators","interceptors","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","handlers","use","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","code","transformData","throwIfCancellationRequested","transformRequest","common","adapter","transformResponse","toJSON","fileName","lineNumber","columnNumber","stack","config1","config2","isPlainObject","getMergedValue","mergeMap","valueFromConfig2","defaultToConfig2","timeoutMessage","decompress","maxContentLength","maxBodyLength","transport","httpAgent","httpsAgent","socketPath","responseEncoding","validateStatus","mergeDirectKeys","mergeDeepProperties","configValue","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","setContentTypeIfUnset","rawValue","parser","encoder","JSON","parse","trim","stringify","stringifySafely","strictJSONParsing","Accept","thisArg","serializedParams","parts","v","isDate","toISOString","encode","hashmarkIndex","relativeURL","expires","path","secure","cookie","isNumber","toGMTString","RegExp","decodeURIComponent","payload","originURL","msie","urlParsingNode","href","protocol","host","search","hash","hostname","port","pathname","charAt","resolveURL","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","substr","callback","thing","deprecatedWarnings","opt","desc","opts","formatMessage","console","warn","schema","allowUnknown","getPrototypeOf","constructor","FormData","ArrayBuffer","isView","URLSearchParams","product","J","assignValue","b","stripBOM","GetIntrinsic","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$max","originalFunction","applyBind","_typeof","arr2","UNRESOLVED_LINK","isLink","makeLookupKey","walkMutate","predicate","mutator","removeUnresolved","cleanUpLinks","oe","items","responseClone","copy","allIncludes","_toConsumableArray","allEntries","entityMap","entity","item","entryObject","itemEntryPoints","ownKey","entryObj","entryPoint","makeEntryObject","link","resolvedLink","_link$sys","lookupKey","linkType","getLink","normalizeLink","enumerableOnly","symbols","sym","_defineProperty","getOwnPropertyDescriptors","_wrapRegExp","re","groups","BabelRegExp","_super","_groups","flags","_this","_setPrototypeOf","g","_inherits","buildGroups","substitution","subClass","superClass","o","setPrototypeOf","minLen","_arrayLikeToArray","browser","PERCENTAGE_REGEX","limit","_type$match","percentage","logger","pThrottle","interval","strict","attempts","networkErrorAttempts","delay","ms","HOST_REGEX","_objectSpread2","insecure","retryOnError","logHandler","level","title","log","throttle","proxy","basePath","accessToken","missingAccessTokenError","space","defaultHostname","_parsed","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","return","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_slicedToArray","isNode","getNodeVersion","axiosOptions","qs","responseLogger","requestLogger","httpClientParams","cloneWithNewParams","newParams","createHttpClient","onBeforeRequest","getToken","asyncToken","axiosInstance","_axiosInstance$defaul","calculateLimit","createThrottle","isCalculated","requestInterceptorId","rawLimit","nextLimit","rateLimitThrottle","maxRetry","_instance$defaults","_instance$defaults$re","_instance$defaults$re2","retryErrorType","wait","pow","SQRT2","requestId","rateLimit","retryLimit","onError","_ref","query","resolveLinks","_step","_iterator","allowArrayLike","normalCompletion","didErr","step","_createForOfIteratorHelper","deepFreeze","win","platform","sdk","application","integration","headerParts","getBrowserOS","nt","os","platformMap","android","aix","darwin","freebsd","linux","openbsd","sunos","win32","getNodeOS","errorResponse","errorName","errorData","details","payloadData","_unused","_errorData$message","percentTwenties","default","formatters","RFC1738","RFC3986","formats","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decoder","decode","delimiter","depth","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","fromCharCode","parseArrayValue","parseKeys","givenKey","valuesParsed","child","segment","leaf","root","cleanRoot","parseObject","isRegExp","normalizeParseOptions","tempObj","Infinity","skipIndex","bracketEqualsPos","pos","maybeMap","encodedVal","B","combine","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","encodeValuesOnly","format","formatter","serializeDate","skipNulls","generateArrayPrefix","sort","sideChannel","RangeError","qe","isNonNullishPrimitive","objKeys","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","hexTable","arrayToObject","acc","queue","refs","compactQueue","compacted","strWithoutPlus","defaultEncoder","kind","out","mapped","mergeTarget","targetItem","_objectSpread","environment","userAgentHeader","_contentfulSdkCore","getUserAgentHeader","http","_axios","getGlobalOptions","_createGlobalOptions","spaceBaseUrl","environmentBaseUrl","_createContentfulApi","_interopRequireDefault","Q","wrapSpace","_entities","R","contentType","wrapContentType","wrapContentTypeCollection","Y","entry","wrapEntry","wrapEntryCollection","vt","asset","wrapAsset","wrapAssetCollection","wrapTag","wrapTagCollection","wrapAssetKey","assetKey","wrapLocaleCollection","notFoundError","switchToSpace","Se","errorHandler","switchToEnvironment","ue","me","createRequestConfig","Ge","getEntries","de","bt","Re","_normalizeSelect","Ne","mn","Ht","wt","Rt","expiresAt","fe","_validateTimestamp","maximum","ASSET_KEY_MAX_LIFETIME","post","Xe","paginate","_pagedSync","be","getSpace","getContentType","getContentTypes","getEntry","getAsset","getAssets","getTag","getTags","createAssetKey","getLocales","parseEntries","ge","sync","globalSettings","freezeSys","toPlainObject","_fastCopy","wrappedData","_stringifySafe","_contentfulResolveResponse","_interopRequireWildcard","nodeInterop","cacheBabelInterop","cacheNodeInterop","_getRequireWildcardCache","cache","hasPropertyDescriptor","serializer","indent","_jsonStringifySafe","circular","pagedSync","Ye","initial","nextSyncToken","nextPageToken","content_type","Pe","defaultOptions","syncOptions","getSyncPage","mappedResponseItems","mapResponseItems","reducer","accumulated","entries","assets","deletedEntries","deletedAssets","sync_token","ye","nextPageUrl","nextSyncUrl","urlParts","allSelects","selectedSet","Set","I","timestamp","ValidationError","toStringFunction","SUPPORTS","getCleanClone","realm","Constructor","getObjectCloneLoose","handleCopy","clone","length_1","getObjectCloneStrict","properties","property","GLOBAL_THIS","isStrict","getObjectClone","regExp","ignoreCase","multiline","unicode","sticky","getRegExpFlags","Blob","Buffer","allocUnsafe","WeakSet","_keys","_values","createCache","ERROR_MESSAGE","toStr","funcType","that","bound","binder","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","Atomics","BigInt","DataView","decodeURI","encodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Proxy","ReferenceError","Reflect","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","alias","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","origSymbol","hasSymbolSham","symObj","syms","replacer","cycleReplacer","thisPos","spaces","objectProto","funcToString","objectCtorString","objectToString","getPrototype","arg","isObjectLike","isHostObject","Ctor","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","inspectCustom","inspectSymbol","toStringTag","defaultStyle","quoteChar","quoteStyle","seen","maxStringLength","customInspect","inspectString","maxDepth","baseIndent","base","getIndent","noIndent","newOpts","inspect_","nameOf","arrObjKeys","inspect","symString","markBoxed","isElement","attributes","wrapQuotes","xs","singleLineValues","indentedJoin","isError","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","isBoolean","ys","protoTag","stringTag","remaining","trailer","lowbyte","lineJoiner","isArr","symMap","k","AbortError","ie","G","currentTick","activeCount","strictTicks","getDelay","earliestTime","throttled","isEnabled","function_","W","clearTimeout","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","define","innerFn","outerFn","tryLocsList","generator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","wrap","IteratorPrototype","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","PromiseImpl","__await","invoke","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","pushTryEntry","reset","iterable","iteratorMethod","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","awrap","defineIteratorMethods","AsyncIterator","iter","reverse","skipTempReset","resetTryEntry","stop","rootRecord","rval","exception","loc","caught","handle","hasCatch","hasFinally","finallyEntry","ze","finish","catch","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","BehaviorSubject","_value","getValue","hasError","thrownError","ObjectUnsubscribedError","_isScalar","_subscribe","operator","observerOrNext","sink","nextOrObserver","rxSubscriberSymbol","emptyObserver","toSubscriber","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","isStopped","canReportError","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","L","Z","empty","hostReportError","outerValue","innerIndex","innerSub","SubjectSubscription","subject","observers","subscriberIndex","Subscription","SubjectSubscriber","AnonymousSubject","destinationOrNext","he","SafeSubscriber","_next","_error","_complete","_parentOrParents","_parentSubscriber","Ae","_context","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","wrappedComplete","UnsubscriptionErrorImpl","errors","UnsubscriptionError","_subscriptions","_ctorUnsubscribe","_unsubscribe","flattenUnsubscriptionErrors","sub","teardown","tmp","subscriptionIndex","ae","errs","_enable_super_gross_mode_that_will_cause_bad_things","notifyNext","notifyError","notifyComplete","K","innerSubscriber","subscribeTo","connectableProto","ConnectableObservable","subjectFactory","_refCount","_isComplete","getSubject","_subject","connection","_connection","ConnectableSubscriber","higherOrderRefCount","connectableObservableDescriptor","connect","refCount","connectable","NONE","CombineLatestOperator","CombineLatestSubscriber","unused","_tryResultSelector","mergeAll","concatAll","emptyScheduled","sources","forkJoinInternal","completed","emitted","isInteropObservable","scheduleObservable","isPromise","schedulePromise","isArrayLike","scheduleArray","isIterable","scheduleIterable","scheduled","subscribeToArray","counter","concurrent","POSITIVE_INFINITY","CatchOperator","CatchSubscriber","err2","_unsubscribeAndRecycle","innerSubscription","Notification","observe","do","throwError","undefinedValueNotification","completeNotification","absoluteDelay","delayFor","abs","DelayOperator","DelaySubscriber","errored","notification","DelayMessage","_schedule","scheduleNotification","FilterOperator","FilterSubscriber","count","FinallyOperator","FinallySubscriber","MapOperator","MapSubscriber","ii","MergeMapOperator","MergeMapSubscriber","_tryNext","_innerSub","ish","RefCountOperator","refCounter","RefCountSubscriber","sharedConnection","subjectOrSubjectFactory","multicast","shareSubjectFactory","T","SwitchMapOperator","SwitchMapSubscriber","TakeOperator","total","ArgumentOutOfRangeError","TakeSubscriber","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","inclusive","TakeWhileOperator","TakeWhileSubscriber","nextOrComplete","predicateResult","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","TimeoutError","TimeoutErrorImpl","withObservable","absoluteTimeout","waitFor","TimeoutWithOperator","TimeoutWithSubscriber","scheduleTimeout","action","dispatchTimeout","timeoutWith","AsyncAction","work","pending","recycleAsyncId","requestAsyncId","setInterval","flush","clearInterval","_execute","errorValue","actions","Scheduler","SchedulerAction","AsyncScheduler","execute","rxSubscriber","ArgumentOutOfRangeErrorImpl","ObjectUnsubscribedErrorImpl","obs","subscribeToObservable","subscribeToPromise","subscribeToIterable","msg","InnerSubscriber","outerSubscriber","callBound","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","$wm","$m","$o","channel","assert","objects","listGet","listHas","listSet","le","N","baseUrl","breaks","extensions","gfm","headerIds","headerPrefix","highlight","langPrefix","mangle","pedantic","sanitize","sanitizer","silent","smartLists","smartypants","tokenizer","walkTokens","xhtml","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","unescapeTest","caret","regex","getRegex","nonWordAndColonTest","originIndependentUrl","prot","baseUrls","justDomain","rtrim","relativeBase","resolveUrl","noopTest","tableRow","cells","escaped","invert","suffLen","currChar","pattern","cap","lexer","inLink","tokens","inlineTokens","Tokenizer","rules","block","newline","codeBlockStyle","fences","matchIndentToCode","indentToCode","matchIndentInNode","indentCodeCompensation","lang","heading","trimmed","inline","hr","blockquote","blockTokens","istask","ischecked","blankLine","endsWithBlankLine","lines","itemContents","bull","isordered","ordered","loose","itemRegex","trimLeft","nextBulletRegex","task","trimRight","some","pre","def","table","header","splitCells","align","rows","row","lheading","paragraph","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","findClosingBracket","linkLen","outputLink","_escapes","links","reflink","nolink","maskedSrc","prevChar","emStrong","lDelim","nextChar","punctuation","rDelim","rLength","lLength","delimTotal","midDelimTotal","endReg","rDelimAst","rDelimUnd","hasNonSpaceChars","hasSpaceCharsOnBothEnds","br","del","autolink","prevCapZero","_backpedal","_paragraph","edit","_label","_title","bullet","listItemStart","_tag","_comment","normal","reflinkSearch","_punctuation","blockSkip","escapedEmSt","_scheme","_email","_attribute","_href","strong","middle","endAst","endUnd","em","_extended_email","Lexer","inlineQueue","lastToken","cutSrc","lastParagraphClipped","ce","extTokenizer","startBlock","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","lastIndexOf","repeatString","codespan","startInline","inlineText","lex","Renderer","infostring","slugger","slug","cleanUrl","TextRenderer","Slugger","originalSlug","isDryRun","occurenceAccumulator","serialize","getNextSafeSlug","dryrun","Parser","textRenderer","l2","l3","cell","itemBody","checkbox","ret","renderers","parseInline","tablecell","tablerow","listitem","image","checkSanitizeDeprecation","marked","setOptions","newDefaults","changeDefaults","getDefaults","q","hasExtensions","childTokens","pack","ext","prevRenderer","Ue","prevTokenizer","Ke","H","lexInline","_DOM","DomAdapter","PlatformLocation","relativePosition","ɵɵinject","BrowserPlatformLocation","LOCATION_INITIALIZED","_doc","w","_init","_history","history","getDOM","getBaseHref","getGlobalEventTarget","newPath","supportsState","pushState","replaceState","forward","back","go","end","slashes","endsWith","startsWith","pathEndIdx","LocationStrategy","PathLocationStrategy","origin","APP_BASE_HREF","_platformLocation","A","_removeListenerFns","getBaseHrefFromDOM","_baseHref","onPopState","onHashChange","internal","joinWithSlash","includeHash","normalizeQueryParams","queryParams","externalUrl","prepareExternalUrl","historyGo","HashLocationStrategy","Location","platformStrategy","platformLocation","_urlChangeListeners","_platformStrategy","browserBaseHref","stripTrailingSlash","_stripIndexHtml","ev","E","getState","baseHref","_stripBaseHref","_notifyUrlChangeListeners","_urlChangeSubscription","onNext","onThrow","onReturn","NumberFormatStyle","Decimal","Percent","Currency","Scientific","Plural","Zero","One","Two","Few","Many","Other","Format","Standalone","Narrow","Abbreviated","Wide","Short","FormatWidth","Medium","Long","Full","NumberSymbol","Group","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","NaN","TimeSeparator","CurrencyDecimal","CurrencyGroup","formStyle","ɵfindLocaleData","amPm","getLastDefinedValue","ɵLocaleDataIndex","res","getLocalePluralCase","ɵgetLocalePluralCase","ee","hours","minutes","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","ShortGMT","Extended","DateType","FullYear","Month","Hours","Minutes","Seconds","FractionalSeconds","Day","TranslationType","DayPeriods","Days","Months","Eras","timezone","createDate","parsedNb","tzHour","tzMin","dateSetter","setUTCFullYear","timeSetter","setUTCHours","setHours","isoStringToDate","toDate","getNamedFormat","dateTimezoneOffset","getTimezoneOffset","timezoneToOffset","setMinutes","getMinutes","addDateMinutes","convertTimezoneToLocal","dateFormatter","DATE_FORMATS","dateStrGetter","dateGetter","weekNumberingYearGetter","weekGetter","timeZoneGetter","getDateFormatter","localeId","getLocaleId","formatValue","getLocaleDateFormat","getLocaleTimeFormat","shortTime","shortDate","formatDateTime","getLocaleDateTimeFormat","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","num","digits","minusSign","negWrap","neg","strNum","milliseconds","padNumber","getDatePart","formatFractionalSeconds","localeMinus","getLocaleNumberSymbol","getHours","getSeconds","getMilliseconds","form","extended","getDateTranslation","currentHours","currentMinutes","checkFullData","rule","extractTime","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","$t","to","afterFrom","beforeTo","getLocaleDayPeriods","getLocaleEraNames","firstDayOfYear","THURSDAY","datetime","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","getThursdayThisWeek","firstThurs","getFirstThursdayOfYear","diff","fallback","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","ZERO_CHAR","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","parseNumber","toPercent","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","integerLen","exponent","decimals","every","d","lgSize","gSize","negPre","negSuf","posPre","posSuf","patternParts","positive","negative","positiveParts","fraction","et","trunkLen","fractionLen","zeros","numStr","MAX_DIGITS","fractionSize","roundAt","digit","dropTrailingZeros","carry","reduceRight","NgLocalization","NgLocaleLocalization","plural","extraData","ɵregisterLocaleData","cookieStr","eqIndex","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","ɵisListLikeIterable","find","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","forEachAddedItem","_toggleClass","forEachChangedItem","forEachRemovedItem","ɵstringify","rawClassVal","klass","enabled","NgForOfContext","ngForOf","even","NgForOf","_viewContainer","_template","_differs","_ngForOf","_ngForOfDirty","_differ","_trackByFn","ngForTrackBy","getTypeName","_applyChanges","insertTuples","forEachOperation","adjustedPreviousIndex","currentIndex","previousIndex","view","tuple","RecordViewTuple","move","_perViewChange","ilen","forEachIdentityChange","dir","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","condition","ngIf","_updateView","assertTemplate","SwitchView","_viewContainerRef","_templateRef","_created","created","NgSwitch","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","newValue","_ngSwitch","_updateDefaultCases","_defaultViews","matched","useDefault","enforceState","NgSwitchCase","viewContainer","ngSwitch","_addCase","_view","_matchCase","ngSwitchCase","NgStyle","_ngStyle","nameAndUnit","unit","setStyle","removeStyle","_setStyle","NgTemplateOutlet","_viewRef","ngTemplateOutletContext","ngTemplateOutlet","viewContainerRef","LowerCasePipe","invalidPipeArgumentError","ɵpipe","pure","unicodeWordMatch","TitleCasePipe","txt","DATE_PIPE_DEFAULT_TIMEZONE","DatePipe","defaultTimezone","DecimalPipe","isValue","formatNumberToLocaleString","parseNumberFormat","getLocaleNumberFormat","formatNumber","strToNumber","PercentPipe","formatPercent","useClass","PLATFORM_BROWSER_ID","platformId","ViewportScroller","ɵɵdefineInjectable","BrowserViewportScroller","supportsScrolling","scrollTo","elSelected","documentResult","getElementById","getElementsByName","createTreeWalker","createShadowRoot","attachShadow","treeWalker","NodeFilter","SHOW_ELEMENT","currentNode","shadowRoot","nextNode","findAnchorFromDocument","scrollToElement","attemptFocus","scrollRestoration","supportScrollRestoration","focusTarget","scrollRestorationDescriptor","getScrollRestorationProperty","XhrFactory","HttpHandler","HttpBackend","HttpHeaders","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","init","op","lcName","copyFrom","applyUpdate","update","toDelete","existing","HttpUrlEncodingCodec","standardEncoding","rawParams","codec","param","eqIdx","je","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","HttpParams","updates","cloneFrom","fromString","fromObject","paramParser","eKey","encodeKey","encodeValue","valueToString","idx","HttpContext","HttpRequest","third","fourth","reportProgress","ct","urlWithParams","qIdx","isUrlSearchParams","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","ok","HttpHeaderResponse","HttpResponse","HttpErrorResponse","HttpClient","req","events$","concatMap","res$","callbackParam","append","addBody","HttpInterceptorHandler","intercept","HTTP_INTERCEPTORS","NoopInterceptor","nextRequestId","JsonpCallbackContext","JsonpClientBackend","callbackMap","resolvedPromise","nextCallback","finished","cancelled","cleanup","onLoad","JsonpInterceptor","jsonp","XSSI_PREFIX","HttpXhrBackend","xhrFactory","xhr","build","detectedType","detectContentTypeHeader","reqBody","serializeBody","headerResponse","partialFromXhr","getResponseHeader","getResponseUrl","originalBody","sentHeaders","onDownProgress","progressEvent","loaded","lengthComputable","partialText","onUpProgress","progress","DONE","XSRF_COOKIE_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","doc","cookieName","lastCookieString","parseCount","cookieString","ɵparseCookieValue","PLATFORM_ID","HttpXsrfInterceptor","tokenService","headerName","lcUrl","HttpInterceptingHandler","backend","HttpClientXsrfModule","ngModule","HttpClientModule","withOptions","HttpClientJsonpModule","useFactory","jsonpCallbackContext","AUD","BBD","BMD","BRL","BSD","BZD","CNY","DKK","DOP","EEK","EGP","ESP","GBP","HKD","IEP","INR","ISK","JMD","JPY","KRW","NOK","NZD","PHP","RON","SEK","TWD","USD","VND","M","r","objWithPropertyToExtract","getClosureSafeProperty","overriddenName","newLineIndex","__forward_ref__","forwardRefFn","isForwardRef","RuntimeError","fullCode","formatRuntimeError","renderStringify","injectorName","injectorDetails","stringifyForError","actual","expected","comparison","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","field","NG_INJ_DEF","NG_INJECTOR_DEF","_injectImplementation","ngInjectableDef","ngInjectorDef","InjectFlags","Default","Host","Self","SkipSelf","Optional","impl","previous","notFoundValue","injectableDef","getInjectableDef","throwProviderNotFoundError","ChangeDetectionStrategy","OnPush","ViewEncapsulation$1","ViewEncapsulation","Emulated","None","ShadowDom","__globalThis","__window","__self","WorkerGlobalScope","__global","_global","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","_renderCompCount$1","componentDefinition","noSideEffects","declaredInputs","providersResolver","onPush","directiveDefs","pipeDefs","setInput","schemas","tView","directiveTypes","pipeTypes","pipes","invertObject","extractDirectiveDef","extractPipeDef","getComponentDef","getDirectiveDef","getPipeDef$1","autoRegisterModuleById","bootstrap","declarations","transitiveCompileScopes","scope","ngModuleDef","getNgModuleDef","secondary","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefineComponent","pipeDef","ngOnDestroy","throwNotFound","tNode","SimpleChange","firstChange","NgOnChangesFeatureImpl","definition","ngOnChanges","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","SIMPLE_CHANGES_STORE","setSimpleChangesStore","previousChange","ɵɵNgOnChangesFeature","ngInherit","listen","domRendererFactory3","rendererType","getDocument","lView","unwrapRNode","nodeIndex","slotValue","isLView","lContainer","amount","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","isInCheckNoChangesMode","viewToRestore","contextLView","currentTNode","getCurrentTNodePlaceholderOk","isParent","bindingRootIndex","bindingStartIndex","bindingIndex","isInI18nBlock","inI18n","currentDirectiveIndex","setCurrentDirectiveIndex","currentQueryIndex","declTNode","parentTNode","parentLView","getDeclarationTNode","allocLFrame","newView","newLFrame","firstChild","currentLFrame","childLFrame","selectedIndex","elementDepthCount","currentNamespace","oldLFrame","leaveDI","leaveViewLight","nestingLevel","currentView","walkUpViews","getTNode","directiveStart","directiveEnd","lifecycleHooks","ngAfterContentInit","ngAfterContentChecked","ngAfterViewInit","ngAfterViewChecked","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","hooks","callHooks","initPhase","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","callHook","isInitHook","hook","directive","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","native","isProc","isProceduralRenderer","namespaceURI","attrName","attrVal","setAttributeNS","isAnimationProp","marker","dst","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","parentLocation","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","oldValue","nextNgElementId","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","hasParentInjector","parentIndex","getParentInjectorIndex","getParentInjectorView","parentData","footer","declarationViewOffset","lViewCursor","tViewType","bloomHash","BLOOM_SIZE","bloomAdd","moduleInjector","previousInjectImplementation","setInjectImplementation","injectRootLimpMode","notFoundValueOrThrow","bloomHashBitOrFactory","enterDI","lookupTokenUsingModuleInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","NOT_FOUND","NodeInjector","getCurrentTNode","getLView","currentTView","injectableIdx","locateDirectiveOrProvider","isComponentHost","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","endIndex","providerTokenOrDef","dirDef","isComponentDef","tData","isFactory","throwCyclicDependencyError","previousIncludeViewProviders","setIncludeViewProviders","directiveIndex","directiveDef","ngOnInit","ngDoCheck","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","registerPreOrderHooks","tokenId","createNodeInjector","injectorView","isFirstHostTNode","_tNode","_lView","getOrCreateInjectable","ownConstructor","ownFactory","getFactoryOf","objectPrototype","resolveForwardRef","getFactoryDef","attrNameToInject","classes","attrsLength","isNameOnlyAttributeMarker","injectAttributeImpl","PARAMETERS","parentClass","metaCtor","propName","makeMetadataCtor","ParamDecoratorFactory","annotationInstance","ParamDecorator","annotation","cls","unusedKey","parameters","ngMetadataName","annotationCls","_desc","ANALYZE_FOR_ENTRY_COMPONENTS","flatten","deepForEach","keyValueArray","keyValueArrayIndexOf","value1","value2","arrayInsert2","_arrayIndexOfSorted","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NEW_LINE","SOURCE","USE_VALUE$2","_currentInjector","former","getInjectImplementation","injectInjectorOnly","types","meta","flag","getInjectFlag","decorator","injectorErrorName","tokenPath","formatError","NG_TOKEN_PATH","policy$1","policy","Inject","attachInjectFlag","makeParamDecorator","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","getPolicy$1","getPolicy","SafeValueImpl","changingThisBreaksApplicationSecurity","SafeHtmlImpl","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","actualType","getSanitizationBypassType","trustedHtml","trustedStyle","trustedScript","trustedUrl","trustedResourceUrl","defaultDoc","inertDocumentHelper","InertDocumentHelper","DOMParser","parseFromString","trustedHTMLFromString","isDOMParserAvailable","DOMParserHelper","getInertBodyElement","inertDocument","createHTMLDocument","inertHtml","inertBodyElement","templateEl","innerHTML","inertBody","documentMode","stripCustomNsAttrs","elAttrs","childNode","Node","ELEMENT_NODE","nextSibling","SAFE_URL_PATTERN","DATA_URL_PATTERN","srcset","_sanitizeUrl","tags","sets","inertBodyHelper","VOID_ELEMENTS","tagSet","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","SRCSET_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","buf","traverseContent","startElement","TEXT_NODE","chars","endElement","checkClobberedElement","elAttr","lower","sanitizeSrcset","encodeEntities","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","outerHTML","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","unsafeHtmlInput","getInertBodyHelper","unsafeHtml","mXSSAttempts","parsedHtml","sanitizeChildren","getTemplateContent","safeHtml","isTemplateElement","SecurityContext","HTML","STYLE","SCRIPT","URL","RESOURCE_URL","getSanitizer","trustedHTMLFromStringBypass","allowSanitizationBypassAndThrow","unwrapSafeValue","_sanitizeHtml","unsafeUrl","MONKEY_PATCH_KEY_NAME","readPatchedData","ERROR_ORIGINAL_ERROR","ErrorHandler","_console","originalError","_findOriginalError","_findContext","errorLogger","ERROR_LOGGER","defaultErrorLogger","getErrorLogger","ERROR_DEBUG_CONTEXT","getDebugContext","getOriginalError","COMMENT_DISALLOWED","COMMENT_DELIMITER","defaultScheduler","ownerDocument","defaultView","_icuContainerIterate","RendererStyleFlags2","Important","DashCase","tIcuContainerNode","isLContainer","getNearestLContainer","lNodeToHandle","beforeNode","isComponent","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","destroyNode","parentRElement","anchor","applyToElementOrContainer","applyView","applyContainer","createText","setValue","textContent","createComment","escapeCommentText","createElementNS","declarationContainer","movedViews","declarationViewIndex","insertionLContainer","updateTransplantedViewCount","removeIndex","indexInContainer","viewToDetach","declarationLContainer","detachMovedView","removedLView","removeFromArray","removeViewFromContainer","lQueries","detachView","rootView","lViewOrLContainer","cleanUpView","firstView","destroyViewTree","toCall","callContext","executeOnDestroys","tCleanup","lCleanup","lastLCleanupIndex","idxOrTargetGetter","useCaptureOrSubIdx","instanceCleanupFn","processCleanups","getClosestRElement","getNativeByTNode","isMove","_getInsertInFrontOfRNodeWithI18n","_processI18nInsertBefore","getInsertInFrontOfRNodeWithNoI18n","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getParentRElement","anchorNode","getInsertInFrontOfRNode","nativeAppendOrInsertBefore","tNodeType","getBeforeNodeForView","elIcuContainerChild","getFirstNativeNode","rNodeOrLContainer","icuContainerIterate","nextRNode","projectionNodes","getProjectionNodes","getLViewParent","projection","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isHostElement","nativeParent","nativeParentNode","nativeRemoveChild","isProjection","rawSlotValue","attachPatchData","applyNodes","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","cssText","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","cssClassToMatch","isProjectionMode","classIndexOf","currentSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","hasTagAndTypeMatch","isPositive","selectorAttrValue","isCssClassMatching","attrIndexInNode","findAttrIndexInNode","isInlineTemplate","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","attr","matchTemplateAttribute","isNodeMatchingSelector","selectorListLoop","currentSelectorInList","isNegativeMode","chunk","currentChunk","valueOrMarker","attrValue","maybeWrapInNotSelector","NO_CHANGE","delta","selectIndexInternal","getTView","getSelectedIndex","checkNoChangesMode","executeCheckHooks","executeInitAndCheckHooks","setSelectedIndex","tStylingRange","directiveDefIdx","setCurrentQueryIndex","tHostNode","rendererFactory","resetPreOrderHookFlags","createTNodeAtIndex","getCurrentParentTNode","setCurrentTNode","isCurrentTNodeParent","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","mergedAttrs","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","createTNode","numSlotsToAlloc","initialValue","allocIdx","enterView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","refreshContentQueries","staticViewQueries","hostLView","renderComponent$1","renderChildComponents","incompleteFirstPass","leaveView","isInCheckNoChangesPass","setBindingIndex","hooksInitPhaseCompleted","incrementInitPhaseFlags","getFirstLContainer","getNextLContainer","movedLView","markTransplantedViewsForRefresh","embeddedLView","embeddedTView","viewAttachedToChangeDetector","refreshView","refreshEmbeddedViews","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","setBindingRootForHostBindings","processHostBindingOpCodes","refreshComponent","refreshChildComponents","firstUpdatePass","normalExecutionPath","creationModeIsActive","isCreationMode","begin","renderView","prevSelectedIndex","isUpdatePhase","isContentQueryHost","getBindingsEnabled","getOrCreateNodeInjectorForNode","addComponentLogic","setInputsFromAttrs","getComponentLViewByIndex","instantiateAllDirectives","elementIndex","invokeHostBindingsInCreationMode","invokeDirectivesHostBindings","viewData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","queries","fill","expandoStartIndex","directiveRegistry","pipeRegistry","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","inputAliasMap","propStore","internalName","nativeOnly","dataValue","inputData","setInputsForProperty","viewIndex","childComponentLView","markDirtyIfOnPush","mapPropName","localRefs","hasDirectives","registry","isNodeMatchingSelectorList","diPublicInInjector","markAsComponentHost","findDirectiveDefMatches","exportsMap","initTNodeFlags","preOrderHooksFound","preOrderCheckHooksFound","allocExpando","mergeHostAttrs","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","directiveInputs","generateInitialInputs","generatePropertyAliases","initializeInputAndOutputAliases","cacheMatchingLocalNames","directiveVarsIdx","elementIndx","lastSelectedElementIdx","hostTNode","numberOfDirectives","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","getOrCreateTComponentView","componentView","addToViewTree","createLView","strValue","initialInputData","inputsToStore","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","isRootView","handleError","rootContext","rootComponent","readPatchedLView","renderComponentOrTemplate","tickRootContext","viewQueryFn","CLEAN_PROMISE","getNativeByIndex","updateTextNode","writeToHost","concatStringsWithSpace","INJECTOR","NullInjector","INJECTOR_SCOPE","NOT_YET","CIRCULAR$1","NULL_INJECTOR$1","defType","additionalProviders","R3Injector","getNullInjector","records","injectorDefTypes","_destroyed","dedupStack","processProvider","provider","processInjectorType","injectorDef","makeRecord","assertNotDestroyed","service","previousInjector","setCurrentInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","nextInjector","catchInjectorError","defOrWrappedDef","parents","getInjectorDef","isDuplicate","importTypesWithProviders","imported","ve","hn","defProviders","injectorType","ngModuleType","isTypeProvider","isValueProvider","providerToFactory","providerToRecord","multiRecord","injectArgs","hasOnDestroy","paramLength","newArray","inheritedInjectableDef","typeName","getInheritedInjectableDef","getUndecoratedInjectableFactory","unwrappedProvider","isFactoryProvider","deps","isExistingProvider","classRef","hasDeps","INJECTOR_IMPL","createInjectorWithoutInjectorInstances","_resolveInjectorDefTypes","createInjector$1","NULL","registerPostOrderHooks","superType","getSuperType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","fillProperties","defData","ɵɵInheritDefinitionFeature","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","_symbolIterator","isJsObject","getSymbolIterator","is","exp1","exp2","different","bindingUpdated","exp3","bindingUpdated2","exp4","nextBindingIndex","setElementAttribute$1","elementAttributeInternal","getSelectedTNode","ɵɵattribute","v0","suffix","attrsIndex","localRefsIndex","adjustedIndex","tViewConsts","getOrCreateTNode","getConstant","resolveDirectives","templateFirstCreatePass","comment","createLContainer","isDirectiveHost","createDirectivesInstances","saveResolvedLocalsInData","load","elementPropertyInternal","ɵɵproperty","isClassBased","createElementNode","computeStaticStyling","elementStart","elementStartFirstCreatePass","setUpAttributes","writeDirectClass","writeDirectStyle","executeContentQueries","setCurrentTNodeAsNotParent","elementEnd","hasClassInput","setDirectiveInputsWhichShadowsStyling","hasStyleInput","ɵɵelementStart","ɵɵelementEnd","elementContainerStartFirstCreatePass","isObservable","isSubscribable","listenerFn","useCapture","eventTargetResolver","listenerInternal","isTNodeDirectiveHost","processOutputs","lCleanupIndex","existingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","findExistingListener","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","propsLength","ɵɵlistener","profiler","wrapWithPreventDefault","markViewDirty","executeListenerWithErrorHandling","nextListenerFn","wrapListenerIn_markDirtyAndPreventDefault","returnValue","nextContextImpl","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","ngProjectAsAttrIdx","getProjectAsAttrValue","isSelectorInSelectorList","projectionHeads","tails","componentChild","slotIndex","matchingProjectionSlotIndex","selectorIndex","applyProjection","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate","interpolatedValue","interpolation1","tStylingKey","isPrevDir","isClassBinding","tStylingAtIndex","cursor","getTStylingRangePrev","getTStylingRangeNext","foundDuplicate","tStyleRangeAtCursor","isStylingMatch","setTStylingRangeNextDuplicate","setTStylingRangePrevDuplicate","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","consumeClassToken","consumeWhitespace","checkStylingProperty","ɵɵstyleProp","ɵɵclassProp","checkStylingMap","keyValueArraySet","classStringParser","resetParserState","parseClassNameNext","parseClassName","getLastParsedKey","incrementBindingIndex","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","oldKeyValueArray","newKeyValueArray","oldIndex","newIndex","oldKey","newKey","setKey","ne","updateStylingMap","styleKeyValueArray","unwrappedValue","toStylingKeyValueArray","isHostBindings","stylingKey","hostDirectiveDef","getCurrentDirectiveDef","residual","collectStylingFromTAttrs","collectStylingFromDirectives","templateStylingKey","bindings","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","wrapInStaticStylingKey","tStylingKeyWithStatic","isHostBinding","tBindings","tmplHead","tmplTail","isKeyDuplicateOfStatic","previousNode","toTStylingRange","setTStylingRangeNext","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","insertTStylingBinding","currentDirective","desiredMarker","currentMarker","tRange","isStylingValuePresent","getTStylingRangeNextDuplicate","findStylingValue","getTStylingRangePrevDuplicate","isProcedural","removeProperty","isImportant","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","keyValueArrayGet","textNative","ɵɵtextInterpolate1","ɵɵtextInterpolate","interpolated","textBindingInternal","v1","getBindingIndex","interpolation2","ɵɵtextInterpolate2","v2","bindingUpdated3","interpolation3","ɵɵtextInterpolate3","i2","v3","bindingUpdated4","interpolation4","ɵɵhostProperty","localeEn","LOCALE_DATA","LocaleDataIndex","LocaleId","ExtraData","normalizedLocale","normalizeLocale","getLocaleData","parentLocale","findLocaleData","PluralCase","ng","locales","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","DateTimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","Directionality","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","COMMENT","LOCALE_ID$1","tNodeInsertBeforeIndex","i18nParent","anchorRNode","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","setI18nHandling","addTNodeAndUpdateInsertBeforeIndex","tIcu","currentCase","currentCaseLViewIndex","mergedCode","changeMask","changeMaskCounter","createOpCodes","insertInFrontOf","appendNow","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","getParentFromIcuCreateOpCode","U","refIdx","getRefFromIcuCreateOpCode","getTIcu","caseIndex","getCurrentICUCaseIndex","applyMutableOpCodes","anchorIdx","commentValue","commentNodeIndex","createCommentNode","elementNodeIndex","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","mask","applyUpdateOpCodes","icuExpression","bindingValue","cases","resolvedCase","getPluralCase","getCaseIndex","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","_removes","_stack","_index","removeOpCode","enterIcu","icuContainerIteratorNext","BINDING_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","parentTNodeIndex","subTemplateIndex","rootTNode","existingTNodeStack","isRootTemplateMessage","removeInnerTemplateTranslation","getTranslationForTemplate","msgParts","replaceNgsp","i18nParseTextIntoPartsAndICU","i18nStartFirstCreatePassProcessTextNode","icuStart","createTNodeAndAddOpCode","isClosing","createTNodePlaceholder","existingTNodes","isICU","i18nNodeIdx","loader","ensureIcuContainerVisitorLoaded","loadIcuContainerVisitor","assertEqual","setTNodeInsertBeforeIndex","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","tagMatched","inTemplate","bindingMask","mainBinding","addUpdateIcuSwitch","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","icuType","binding","blocks","prevPos","braceStack","results","braces","parseICUBlock","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","messageIndex","i18nStartFirstCreatePass","tI18n","applyCreateOpCodes","setInI18nBlock","ɵɵi18nStart","setMaskBit","hasChange","ɵɵi18nExp","applyI18n","viewProviders","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","ɵɵdirectiveInject","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesViewProvidersFactoryExist","factoryFn","componentProviders","multiFactoryAdd","multiFactory","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","processProvidersFn","ComponentRef$1","ComponentFactory$1","_NullComponentFactoryResolver","ERROR_COMPONENT","noComponentFactoryError","ComponentFactoryResolver$1","SWITCH_ELEMENT_REF_FACTORY","createElementRef","RendererFactory2","Renderer2","SWITCH_RENDERER2_FACTORY","nodeAtIndex","getOrCreateRenderer2","Sanitizer","Version","full","major","minor","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","lNode","lViewInAContainer","lViewFirstChildTNode","collectNativeNodes","nodesInSlot","ViewRef$1","_cdRefInjectingView","_appRef","_attachedToViewContainer","viewRefs","destroyLView","storeCleanupWithContext","detectChangesInternal","setIsInCheckNoChangesMode","checkNoChangesInternal","renderDetachView$1","appRef","RootViewRef","detectChangesInRootView","checkNoChangesInRootView","ComponentFactoryResolver","componentDef","ComponentFactory","nonMinified","templateName","SCHEDULER","componentType","selectorList","stringifyCSSSelector","stringifyCSSSelectorList","isBoundToModule","toRefArray","projectableNodes","rootSelectorOrNode","tElementNode","rootViewInjector","createChainedInjector","hostRenderer","elementName","hostRNode","elementOrSelector","selectRootElement","rElement","locateHostElement","getNamespace","rootFlags","playerHandler","clean","createRootContext","rootTView","rootLView","viewRenderer","createRootComponentView","extractAttrsAndClassesFromSelector","On","nodesforSlot","hostFeatures","instantiateRootComponent","createRootComponent","LifecycleHooksFeature","ComponentRef","_rootLView","NgModuleRef$1","NgModuleFactory$1","modules","NgModuleRef","_parent","_bootstrapComponents","destroyCbs","componentFactoryResolver","maybeUnwrapFn","_r3Injector","injectFlags","destroyed","NgModuleFactory","moduleType","visited","incoming","assertSameOrNotExisting","recurse","registerNgModuleType","parentInjector","slotOffset","pureFn","getBindingRoot","updateBinding","getBinding","exp","pureFunction1Internal","pureFunction2Internal","bindingRoot","getPureFunctionReturnValue","pureFunction3Internal","pureFunction4Internal","returnValueIndex","lastReturnValue","pipeName","getPipeDef","pipeFactory","pipeInstance","isPure","EventEmitter_","isAsync","__isAsync","nextFn","errorFn","completeFn","te","_wrapInTimeout","_results","QueryList","_emitDistinctChangesOnly","dirty","_changesDetected","_changes","symbolIterator","resultsTree","identityAccessor","newResultFlat","valueA","valueB","arrayEquals","SWITCH_TEMPLATE_REF_FACTORY","createTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","elementRef","declarationViewLQueries","SWITCH_VIEW_CONTAINER_REF_FACTORY","createContainerRef","ViewContainerRef","R3ViewContainerRef","_lContainer","_hostTNode","_hostLView","getViewRefs","insert","componentFactoryOrType","indexOrOptions","ngModuleRef","isComponentFactory","isType","componentFactory","contextInjector","viewAttachedToContainer","prevIdx","detach","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","containerLength","addToArray","trackMovedView","insertView","parentNativeNode","addViewToContainer","attachToViewContainerRef","getOrCreateViewRefs","viewRefsArr","detachedView","commentNode","nativeNextSibling","LQuery_","queryList","setDirty","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","matchingIdx","createResultByTNodeType","createSpecialToken","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","createResultForNode","lViewResults","materializeViewResults","collectQueryResults","embeddedLViews","getCurrentQueryIndex","unwrapElementRef","notifyOnChanges","createTQuery","createLQuery","tViewContentQueries","saveContentQueryAndDirectiveIndex","track","APP_INITIALIZER","ApplicationInitStatus","appInits","initialized","donePromise","rej","asyncInitPromises","initResult","observableAsPromise","APP_ID","APP_ID_RANDOM_PROVIDER","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","DEFAULT_CURRENCY_CODE","ModuleWithComponentFactories","ngModuleFactory","componentFactories","Compiler_compileModuleSync__POST_R3__","Compiler_compileModuleSync","Compiler_compileModuleAsync","Compiler_compileModuleAndAllComponentsSync__POST_R3__","declaration","Compiler_compileModuleAndAllComponentsSync","Compiler_compileModuleAndAllComponentsAsync","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","Zone","scheduleMicroTask","NgZone","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","isStable","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","nativeCancelAnimationFrame","cancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","getNativeRequestAnimationFrame","delayChangeDetectionForEventsDelegate","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","delayChangeDetectionForEvents","isAngularZone","onInvokeTask","applyThis","applyArgs","onEnter","invokeTask","onLeave","onInvoke","onHasTask","hasTaskState","hasTask","change","_hasPendingMicrotasks","microTask","macroTask","onHandleError","forkInnerZoneWithAngularBehavior","EMPTY_PAYLOAD","runTask","cancelTask","runGuarded","isInAngularZone","NoopNgZone","Testability","_pendingCount","_isZoneStable","_didWork","_callbacks","taskTrackingZone","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","cb","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","using","exactMatch","TestabilityRegistry","_applications","_testabilityGetter","addToWindow","testability","elem","findInAncestors","findTestabilityInTree","getter","_NoopGetTestability","_devMode","_runModeLocked","_platform","compileNgModuleFactory","moduleFactory","ALLOW_MULTIPLE_PLATFORMS","NgProbeToken","PlatformRef","inits","parentPlatformFactory","extraProviders","getPlatform","injectedProviders","createPlatform","assertPlatform","requiredToken","_modules","_destroyListeners","ngZone","ngZoneOption","extra","ngZoneEventCoalescing","ngZoneRunCoalescing","getNgZone","ngZoneInjector","moduleRef","exceptionHandler","initStatus","runInitializers","assertDefined","setLocaleId","_moduleDoBootstrap","_callAndReportToErrorHandler","compilerOptions","optionsReducer","bootstrapModuleFactory","ApplicationRef","ngDoBootstrap","objs","_exceptionHandler","_componentFactoryResolver","_initStatus","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","tick","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","share","componentOrFactory","cf","compRef","testabilityRegistry","registerApplication","unregisterApplication","_loadComponent","attachToAppRef","detachFromAppRef","SWITCH_CHANGE_DETECTOR_REF_FACTORY","isPipe","createViewRef","ChangeDetectorRef","getDebugNodeR2","_nativeNode","DefaultIterableDifferFactory","isListLikeIterable","trackByFn","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","_nextPrevious","_nextAdded","_nextMoved","_nextIdentityChange","collection","_reset","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","put","toIndex","_prevDup","_nextDup","_DuplicateItemRecordList","_head","_tail","atOrAfterIndex","duplicates","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_forEach","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","IterableDiffers","supports","getTypeNameForDebugging","copied","defaultIterableDiffersFactory","KeyValueDiffers","kv","defaultKeyValueDiffersFactory","keyValDiff","defaultIterableDiffers","defaultKeyValueDiffers","platformCore","createPlatformFactory","APPLICATION_MODULE_PROVIDERS","ApplicationModule","ɵɵdefineNgModule","ɵɵdefineInjector","BaseControlValueAccessor","isDisabled","BuiltInControlValueAccessor","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","ɵgetDOM","getUserAgent","_isAndroid","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","Validators","control","isEmptyInputValue","minValidator","maxValidator","required","requiredValidator","requiredTrueValidator","email","emailValidator","minLength","hasValidLength","minlength","requiredLength","actualLength","minLengthValidator","maxLength","maxLengthValidator","regexStr","requiredPattern","actualValue","nullValidator","patternValidator","compose","composeAsync","maxlength","ɵisPromise","ɵisObservable","arrayOfErrors","validate","isValidatorFn","presentValidators","isPresent","mergeErrors","executeValidators","normalizeValidators","toObservable","forkJoin","controlValidators","dirValidator","_rawValidators","_rawAsyncValidators","currentValidators","makeValidatorsArray","validatorsToAdd","hasValidator","AbstractControlDirective","_onDestroyCallbacks","valid","invalid","pristine","touched","untouched","statusChanges","valueChanges","_composedValidatorFn","composeValidators","_composedAsyncValidatorFn","composeAsyncValidators","errorCode","getError","ControlContainer","NgControl","valueAccessor","AbstractControlStatus","_cd","X","submitted","NgControlStatus","NgControlStatusGroup","setUpValidators","writeValue","registerOnChange","_pendingValue","_pendingChange","_pendingDirty","updateOn","updateControl","setUpViewChangePipeline","emitModelEvent","viewToModelUpdate","_registerOnDestroy","_unregisterOnChange","setUpModelChangePipeline","registerOnTouched","_pendingTouched","markAsTouched","setUpBlurPipeline","setDisabledState","onDisabledChange","registerOnDisabledChange","_unregisterOnDisabledChange","setUpDisabledChangeHandler","cleanUpValidators","_invokeOnDestroyCallbacks","_registerOnCollectionChange","registerOnValidatorChange","getControlValidators","setValidators","mergeValidators","asyncValidators","getControlAsyncValidators","asyncValidator","setAsyncValidators","onValidatorChange","updateValueAndValidity","isControlUpdated","updatedValidators","updatedAsyncValidators","markAsDirty","emitModelToViewChange","isFirstChange","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","Sn","VALID","INVALID","PENDING","DISABLED","validatorOrOpts","isOptionsObj","AbstractControl","_hasOwnPendingAsyncValidator","_onCollectionChange","_onDisabledChange","coerceToValidator","coerceToAsyncValidator","validatorFn","asyncValidatorFn","_updateOn","addValidators","removeValidators","onlySelf","_forEachChild","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","disable","_updateValue","_updateAncestors","changeFn","enable","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","ctrl","_updateTreeValidity","_allControlsDisabled","_asyncValidationSubscription","setErrors","_updateControlsErrors","controlToFind","FormGroup","controls","FormArray","at","_find","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","formState","FormControl","pickValidators","pickAsyncValidators","_onChange","_applyFormState","_setUpdateStrategy","_initObservables","emitViewToModelChange","removeListItem","_isBoxedValue","_setUpControls","setParent","registerControl","controlName","_checkAllValuesPresent","_throwIfControlMissing","patchValue","_reduceChildren","getRawValue","subtreeUpdated","updated","_syncPendingControls","_reduceValue","initValue","_registerControl","AbstractFormGroupDirective","_checkParentType","formDirective","addFormGroup","removeFormGroup","getFormGroup","controlPath","ɵNgNoValidate","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","pt","_checkName","_fn","formControlName","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_setValidators","_setAsyncValidators","selectValueAccessor","_isControlChanged","previousForm","cleanUpControl","setUpControl","isPropertyUpdated","_ngModelWarningSentOnce","formDirectiveProvider","FormGroupDirective","_updateDomValue","ngSubmit","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","_setUpFormContainer","_cleanUpFormContainer","syncPendingControls","resetForm","oldCtrl","newCtrl","setUpFormContainer","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","addFormArray","removeFormArray","getFormArray","controlNameBinding","FormControlName","Qt","_added","_setUpControl","updateModel","removeControl","addControl","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_optionMap","_idCounter","_compareWith","_getOptionId","valueString","_buildValueString$1","_getOptionValue","_extractId$1","NgSelectOption","_element","_select","_registerOption","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","optionSelectedStateSetter","ids","_setSelected","selectedOptions","_extractId","ɵNgSelectMultipleOption","_buildValueString","AbstractValidatorDirective","_validator","normalizeInput","createValidator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","handleChanges","ɵInternalFormsSharedModule","ReactiveFormsModule","warnOnNgModelWithFormControl","FormBuilder","controlsConfig","_reduceControls","isAbstractControlOptions","_createControl","controlConfig","GenericBrowserDomAdapter","ke","supportsDOMEvents","ɵDomAdapter","BrowserDomAdapter","evt","getDefaultDocument","DocumentFragment","baseElement","pathName","relativePath","ɵsetRootDomAdapter","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","transitionId","dom","BrowserGetTestability","ɵglobal","getAllTestabilities","getAllRootElements","testabilities","didWork","decrement","didWork_","whenStable","getTestability","isShadowRoot","setTestabilityGetter","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","plugins","_eventNameToPlugin","manager","xe","_plugins","_findPluginFor","addGlobalEventListener","plugin","EventManagerPlugin","SharedStylesHost","_stylesSet","additions","onStylesAdded","DomSharedStylesHost","$e","_hostNodes","styleNodes","styleEl","Ft","hostNode","_addStylesToHost","ht","styleNode","NAMESPACE_URIS","svg","xlink","xml","xmlns","COMPONENT_REGEX","HOST_ATTR","CONTENT_ATTR","compId","flattenStyles","eventHandler","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","addStyles","newChild","refChild","oldChild","selectorOrNode","preserveContent","namespaceUri","removeAttributeNS","decoratePreventDefault","Tt","contentAttr","componentShortId","shimContentAttribute","hostAttr","shimHostAttribute","hostEl","addHost","removeHost","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","_keyMap","Del","Esc","Left","Right","Up","Down","Menu","Scroll","Win","_chromeNumKeyPadMap","D","MODIFIER_KEY_GETTERS","alt","altKey","ctrlKey","metaKey","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","getZone","onAndCancel","domEventName","_normalizeKey","modifierName","keyIdentifier","getEventKey","modifierGetter","getEventFullKey","keyName","DomSanitizer","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵgetSanitizationBypassType","ɵ_sanitizeUrl","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","platformBrowser","ɵPLATFORM_BROWSER_ID","makeCurrent","ɵsetDocument","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","BrowserModule","parentModule","Meta","_dom","forceCreation","_getOrCreateElement","attrSelector","_parseSelector","_setMetaElementAttributes","removeTagElement","_containsAttributes","getElementsByTagName","_getMetaKeyMap","META_KEYS_MAP","httpEquiv","Title","newTitle","EmptyError","EmptyErrorImpl","observableFactory","accumulator","seed","hasSeed","ScanOperator","ScanSubscriber","_seed","Ee","TakeLastOperator","TakeLastSubscriber","$","ring","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","isEmpty","hasDefaultValue","defaultIfEmpty","throwIfEmpty","RouterEvent","NavigationStart","navigationTrigger","restoredState","NavigationEnd","urlAfterRedirects","se","NavigationCancel","NavigationError","RoutesRecognized","GuardsCheckStart","GuardsCheckEnd","shouldActivate","Ve","ResolveStart","ResolveEnd","RouteConfigLoadStart","route","RouteConfigLoadEnd","ChildActivationStart","snapshot","routeConfig","ChildActivationEnd","ActivationStart","ActivationEnd","routerEvent","PRIMARY_OUTLET","ParamsAsMap","NAVIGATION_CANCELING_ERROR","segments","segmentGroup","pathMatch","hasChildren","posParams","consumed","k1","k2","equalArraysOrString","aSorted","bSorted","pathCompareMap","exact","containee","matrixParams","equalPath","matrixParamsMatch","numberOfChildren","equalSegmentGroups","subset","containsSegmentGroup","paramCompareMap","shallowEqual","ignored","paths","fragment","containsSegmentGroupHelper","containeePaths","containerPaths","containeeSegment","UrlTree","_queryParamMap","convertToParamMap","DEFAULT_SERIALIZER","UrlSegmentGroup","serializePaths","UrlSegment","_parameterMap","serializePath","as","bs","UrlSerializer","DefaultUrlSerializer","UrlParser","parseRootSegment","parseQueryParams","parseFragment","tree","serializeSegment","strParams","encodeUriQuery","serializeQueryParams","encodeUriFragment","primary","childOutlet","mapChildrenIntoArray","encodeUriString","encodeUriSegment","serializeMatrixParams","SEGMENT_RE","QUERY_PARAM_RE","QUERY_PARAM_VALUE_RE","consumeOptional","peekStartsWith","parseChildren","parseQueryParam","parseSegment","capture","parseParens","matchSegments","parseMatrixParams","parseParam","valueMatch","matchQueryParams","matchUrlQueryParamValue","decodedKey","decodeQuery","decodedVal","currentVal","allowPrimary","outletName","Tree","_root","pathFromRoot","findNode","findPath","cc","TreeNode","outlet","RouterState","setRouterState","urlTree","activated","ActivatedRouteSnapshot","RouterStateSnapshot","createEmptyStateSnapshot","emptyUrl","emptyParams","emptyData","emptyQueryParams","ActivatedRoute","futureSnapshot","_futureSnapshot","_routerState","_paramMap","paramsInheritanceStrategy","inheritingStartingFrom","flattenInherited","_resolvedData","urlSegment","lastPathIndex","_urlSegment","_lastPathIndex","serializeNode","currentSnapshot","nextSnapshot","shallowEqualArrays","equalUrlParams","equalSegments","equalParamsAndUrlSegments","routeReuseStrategy","prevState","shouldReuseRoute","createNode","createOrReuseChildren","shouldAttach","detachedRouteHandle","retrieve","createActivatedRoute","commands","nav","Navigation","numberOfDoubleDots","isAbsolute","cmd","cmdIdx","outlets","segmentPath","urlPart","partIndex","computeNavigation","toRoot","startingPosition","Position","modifier","isMatrixParams","group","ci","dd","createPositionApplyingDoubleDots","findStartingPosition","processChildren","updateSegmentGroupChildren","updateSegmentGroup","command","oldSegmentGroup","newSegmentGroup","qp","replaceSegment","oldSegment","newSegment","cmdWithOutlet","isCommandWithOutlets","currentCommandIndex","currentPathIndex","noMatch","pathIndex","commandIndex","compare","prefixedWith","slicedCommands","createNewSegmentGroup","getOutlets","createNewSegmentChildren","ActivateRoutes","futureState","currState","forwardEvent","parentContexts","futureRoot","currRoot","deactivateChildRoutes","advanceActivatedRoute","activateChildRoutes","futureNode","currNode","contexts","nodeChildrenAsMap","childOutletName","futureChild","deactivateRoutes","childName","deactivateRouteAndItsChildren","parentContext","future","getContext","shouldDetach","detachAndStoreRouteSubtree","deactivateRouteAndOutlet","onOutletDeactivated","deactivate","attachRef","resolver","activateRoutes","getOrCreateContext","stored","onOutletReAttached","attach","_loadedConfig","parentLoadedConfig","cmpFactoryResolver","activateWith","LoadedRouterConfig","routes","INITIAL_VALUE","combineLatest","startWith","scan","isPending","innerAcc","isUrlTree","OutletContext","ChildrenOutletContexts","RouterOutlet","changeDetector","_activatedRoute","activateEvents","deactivateEvents","attachEvents","detachEvents","onChildOutletCreated","onChildOutletDestroyed","cmp","ref","activatedRoute","isActivated","childContexts","OutletInjector","createComponent","ɵEmptyOutletComponent","parentPath","getFullPath","validateNode","validateConfig","currentRoute","standardizeConfig","loadChildren","sortedConfig","getOutlet","noMatch$1","consumedSegments","lastChild","positionalParamSegments","matcher","defaultUrlMatcher","slicedSegments","relativeLinkResolution","containsEmptyPathMatchesWithNamedOutlets","createChildrenForEmptyPaths","_sourceSegment","_segmentIndexShift","containsEmptyPathMatches","addEmptyPathsToChildrenIfNeeded","emptyPathMatch","Ot","primarySegment","Me","rawSegment","NoMatch$1","AbsoluteRedirect","newTree","redirectTo","ApplyRedirects","configLoader","urlSerializer","allowRedirects","splitGroup","rootSegmentGroup","expandSegmentGroup","createUrlTree","squashSegmentGroup","catchError","noMatchError","rootCandidate","expandChildren","expandSegment","childOutlets","sortedRoutes","sortByMatchingOutlets","expandedChild","takeLast","last$1","expandSegmentAgainstRoute","noLeftoversInUrl","isImmediateMatch","matchSegmentAgainstRoute","expandSegmentAgainstRouteUsingRedirect","expandWildCardWithParamsAgainstRouteUsingRedirect","expandRegularSegmentAgainstRouteUsingRedirect","applyRedirectCommands","absoluteRedirect","lineralizeSegments","newSegments","rawSegmentGroup","cfg","rawSlicedSegments","getChildConfig","routerConfig","childModule","childConfig","si","splitSegmentGroup","matchedOnOutlet","cs","runCanLoadGuards","shouldLoadResult","navigationCancelingError","canLoadFails","canLoad","canLoadObservables","injectionToken","guardVal","guard","isCanLoad","wrapIntoObservable","prioritizedGuardValue","namedOutletsRedirect","applyRedirectCreatreUrlTree","newRoot","createSegmentGroup","createQueryParams","redirectToParams","actualParams","sourceName","updatedSegments","createSegments","redirectToSegments","actualSegments","findPosParam","findOrReturn","redirectToUrlSegment","newChildren","childCandidate","mergeTrivialChildren","CanActivate","CanDeactivate","getChildRouteGuards","getClosestLoadedConfig","futurePath","checks","canDeactivateChecks","canActivateChecks","prevChildren","getRouteGuards","shouldRun","shouldRunGuardsAndResolvers","runGuardsAndResolvers","S","NoMatch","Recognizer","rootComponentType","processSegmentGroup","rootNode","routeState","inheritParamsAndData","routeNode","inheritedParamsDataResolve","processSegment","outletChildren","mergedChildren","mergeEmptyPathMatches","sortActivatedRouteSnapshots","localeCompare","processSegmentAgainstRoute","kt","getData","getSourceSegmentGroup","getPathIndexShift","getResolve","tn","mergedNodes","hasEmptyPathConfig","Zn","duplicateEmptyPathNode","resultNode","mergedNode","DefaultRouteReuseStrategy","BaseRouteReuseStrategy","detachedTree","ROUTES","RouterConfigLoader","compiler","onLoadStartListener","onLoadEndListener","_loader$","loadRunner","loadModuleFactory","DefaultUrlHandlingStrategy","newUrlPart","wholeUrl","runExtras","exactMatchOptions","subsetMatchOptions","Router","rootContexts","lastSuccessfulNavigation","currentNavigation","disposed","navigationId","currentPageId","isNgZoneEnabled","events","defaultErrorHandler","malformedUriErrorHandler","defaultMalformedUriErrorHandler","navigated","lastSuccessfulId","beforePreactivation","defaultRouterHook","afterPreactivation","urlHandlingStrategy","onSameUrlNavigation","urlUpdateStrategy","canceledNavigationResolution","ɵConsole","resetConfig","currentUrlTree","rawUrlTree","browserUrlTree","triggerEvent","routerState","createEmptyState","transitions","targetPageId","currentRawUrl","extractedUrl","extract","rawUrl","extras","targetSnapshot","currentRouterState","targetRouterState","guards","guardsResult","navigations","setupNavigations","processNavigations","ɵrouterPageId","eventsSubject","initialUrl","trigger","previousNavigation","urlTransition","shouldProcessUrl","isBrowserTriggeredNavigation","transition","serializeUrl","applyRedirects$1","applyRedirects","finalUrl","recognize","newObservableError","recognize$1","skipLocationChange","setBrowserUrl","routesRecognized","navStart","replaceUrl","switchTap","appliedUrlTree","guardsStart","getAllRouteGuards","futureRSS","currRSS","currARS","canDeactivate","canDeactivateObservables","isCanDeactivate","runCanDeactivate","runCanDeactivateChecks","fireChildActivationStart","fireActivationStart","futureARS","canActivateChildGuards","canActivateChild","getCanActivateChild","canActivateChildGuardsMapped","defer","guardsMapped","isCanActivateChild","runCanActivateChild","canActivate","canActivateObservables","isCanActivate","runCanActivate","runCanActivateChecks","checkGuards","guardsEnd","restoreHistory","cancelNavigationTransition","resolveStart","dataResolved","canActivateChecksResolved","getResolver","resolveNode","resolvedData","runResolve","resolveData","resolveEnd","createRouterState","activate","finalize","cancelationReason","isNavigationCancelingError","redirecting","navCancel","mergedTree","scheduleNavigation","navError","setUpLocationChangeListener","navigateByUrl","locationSubscription","stateCopy","parseUrl","navigationExtras","relativeTo","queryParamsHandling","preserveFragment","removeEmptyProps","validateCommands","matchOptions","containsTree","priorPromise","lastNavigation","browserNavPrecededByRouterNav","navToSameUrl","lastNavigationInProgress","browserPageId","setTransition","generateNgRouterState","isCurrentPathEqualTo","restoringFromCaughtError","targetPagePosition","browserUrlUpdateOccurred","resetState","resetUrlToCurrentUrlTree","routerPageId","RouterLinkWithHref","router","locationStrategy","onChanges","updateTargetUrlAndHref","button","attrBoolValue","i3","PreloadingStrategy","PreloadAllModules","NoPreloading","RouterPreloader","preloadingStrategy","preload","processRoutes","preloadConfig","RouterScroller","viewportScroller","lastId","lastSource","restoredId","scrollPositionRestoration","anchorScrolling","setHistoryScrollRestoration","routerEventsSubscription","createScrollEvents","scrollEventsSubscription","consumeScrollEvents","getScrollPosition","scheduleScrollEvent","scrollToPosition","scrollToAnchor","ROUTER_CONFIGURATION","ROUTER_FORROOT_GUARD","ROUTER_PROVIDERS","assignExtraOptionsToRouter","enableTracing","groupEnd","UrlHandlingStrategy","RouteReuseStrategy","RouterModule","provideRoutes","provideForRootGuard","provideLocationStrategy","createRouterScroller","routerNgProbeToken","RouterInitializer","getAppInitializer","ROUTER_INITIALIZER","getBootstrapListener","scrollOffset","setOffset","platformLocationStrategy","useHash","initNavigation","resultOfPreactivationDone","initialNavigation","bootstrappedComponentRef","preloader","routerScroller","setUpPreloading","resetRootComponentType","appInitializer","bootstrapListener"],"sources":["./node_modules/@angularclass/hmr/dist/experimental.js","./node_modules/@angularclass/hmr/dist/helpers.js","./node_modules/@angularclass/hmr/dist/hmr.js","./node_modules/@angularclass/hmr/dist/index.js","./node_modules/@contentful/rich-text-html-renderer/dist/rich-text-html-renderer.es5.js","./node_modules/@contentful/rich-text-types/dist/rich-text-types.es5.js","./node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/@ng-bootstrap/ng-bootstrap/__ivy_ngcc__/fesm2015/ng-bootstrap.js","./node_modules/rxjs/_esm2015/internal/operators/endWith.js","./node_modules/axios/index.js","./node_modules/axios/lib/adapters/xhr.js","./node_modules/axios/lib/axios.js","./node_modules/axios/lib/cancel/Cancel.js","./node_modules/axios/lib/cancel/CancelToken.js","./node_modules/axios/lib/cancel/isCancel.js","./node_modules/axios/lib/core/Axios.js","./node_modules/axios/lib/core/InterceptorManager.js","./node_modules/axios/lib/core/buildFullPath.js","./node_modules/axios/lib/core/createError.js","./node_modules/axios/lib/core/dispatchRequest.js","./node_modules/axios/lib/core/enhanceError.js","./node_modules/axios/lib/core/mergeConfig.js","./node_modules/axios/lib/core/settle.js","./node_modules/axios/lib/core/transformData.js","./node_modules/axios/lib/defaults.js","./node_modules/axios/lib/env/data.js","./node_modules/axios/lib/helpers/bind.js","./node_modules/axios/lib/helpers/buildURL.js","./node_modules/axios/lib/helpers/combineURLs.js","./node_modules/axios/lib/helpers/cookies.js","./node_modules/axios/lib/helpers/isAbsoluteURL.js","./node_modules/axios/lib/helpers/isAxiosError.js","./node_modules/axios/lib/helpers/isURLSameOrigin.js","./node_modules/axios/lib/helpers/normalizeHeaderName.js","./node_modules/axios/lib/helpers/parseHeaders.js","./node_modules/axios/lib/helpers/spread.js","./node_modules/axios/lib/helpers/validator.js","./node_modules/axios/lib/utils.js","./node_modules/call-bind/callBound.js","./node_modules/call-bind/index.js","./node_modules/contentful-resolve-response/dist/esm/index.js","./node_modules/contentful-sdk-core/dist/index.es-modules.js","./node_modules/contentful-sdk-core/node_modules/qs/lib/formats.js","./node_modules/contentful-sdk-core/node_modules/qs/lib/index.js","./node_modules/contentful-sdk-core/node_modules/qs/lib/parse.js","./node_modules/contentful-sdk-core/node_modules/qs/lib/stringify.js","./node_modules/contentful-sdk-core/node_modules/qs/lib/utils.js","./node_modules/contentful/dist/es-modules/contentful.js","./node_modules/contentful/dist/es-modules/create-contentful-api.js","./node_modules/contentful/dist/es-modules/create-global-options.js","./node_modules/contentful/dist/es-modules/entities/asset-key.js","./node_modules/contentful/dist/es-modules/entities/asset.js","./node_modules/contentful/dist/es-modules/entities/content-type.js","./node_modules/contentful/dist/es-modules/entities/entry.js","./node_modules/contentful/dist/es-modules/entities/index.js","./node_modules/contentful/dist/es-modules/entities/locale.js","./node_modules/contentful/dist/es-modules/entities/space.js","./node_modules/contentful/dist/es-modules/entities/tag.js","./node_modules/contentful/dist/es-modules/mixins/stringify-safe.js","./node_modules/contentful/dist/es-modules/paged-sync.js","./node_modules/contentful/dist/es-modules/utils/normalize-select.js","./node_modules/contentful/dist/es-modules/utils/validate-timestamp.js","./node_modules/fast-copy/dist/fast-copy.js","./node_modules/function-bind/implementation.js","./node_modules/function-bind/index.js","./node_modules/get-intrinsic/index.js","./node_modules/has-symbols/index.js","./node_modules/has-symbols/shams.js","./node_modules/has/src/index.js","./node_modules/json-stringify-safe/stringify.js","./node_modules/lodash.isplainobject/index.js","./node_modules/lodash.isstring/index.js","./node_modules/object-inspect/index.js","./node_modules/p-throttle/index.js","./node_modules/regenerator-runtime/runtime.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/util/TimeoutError.js","./node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js","./node_modules/rxjs/_esm2015/internal/operators/timeout.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/side-channel/index.js","./node_modules/@babel/runtime/helpers/arrayLikeToArray.js","./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","./node_modules/@babel/runtime/helpers/assertThisInitialized.js","./node_modules/@babel/runtime/helpers/asyncToGenerator.js","./node_modules/@babel/runtime/helpers/classCallCheck.js","./node_modules/@babel/runtime/helpers/construct.js","./node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","./node_modules/@babel/runtime/helpers/createSuper.js","./node_modules/@babel/runtime/helpers/getPrototypeOf.js","./node_modules/@babel/runtime/helpers/inherits.js","./node_modules/@babel/runtime/helpers/isNativeFunction.js","./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","./node_modules/@babel/runtime/helpers/iterableToArray.js","./node_modules/@babel/runtime/helpers/nonIterableSpread.js","./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","./node_modules/@babel/runtime/helpers/setPrototypeOf.js","./node_modules/@babel/runtime/helpers/toConsumableArray.js","./node_modules/@babel/runtime/helpers/typeof.js","./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","./node_modules/@babel/runtime/helpers/wrapNativeSuper.js","./node_modules/@babel/runtime/regenerator/index.js","./node_modules/marked/lib/marked.esm.js","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/@angular/common/locales/sv.mjs","./node_modules/@babel/runtime/helpers/esm/construct.js","./node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","./node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/@angular/router/fesm2020/router.mjs","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","./node_modules/@babel/runtime/helpers/esm/createClass.js","./node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","./node_modules/@babel/runtime/helpers/esm/typeof.js","./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","./node_modules/@babel/runtime/helpers/esm/createSuper.js","./node_modules/@babel/runtime/helpers/esm/defineProperty.js","./node_modules/@babel/runtime/helpers/esm/get.js","./node_modules/@babel/runtime/helpers/esm/superPropBase.js","./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/inherits.js","./node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","./node_modules/@babel/runtime/helpers/esm/objectSpread2.js","./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js"],"sourcesContent":["\"use strict\";\n// Experimental API below\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * get input values\n *\n * Extended by: Gabriel Schuster \n * Now gets values of inputs (including \"checked\" status radios, checkboxes), textareas and selects (including multiselects)\n * Tries to identify the elements as exact as possible, falls back to numeric index when identification fails\n * WIP refactor by: PatrickJS\n */\nfunction __getInputValues() {\n var _inputs = document.querySelectorAll('input, textarea, select');\n var inputs = Array.prototype.slice.call(_inputs);\n return inputs.map(function (input) {\n var inputTagName = input.tagName.toLowerCase();\n var inputType = input.type;\n var inputId = (input.id && typeof input.id === 'string') ? input.id : null;\n var inputName = (input.name && typeof input.name === 'string') ? input.name : null;\n var inputValue = (input.value && typeof input.value === 'string') ? input.value : null;\n var inputChildNodes = input.childNodes;\n var inputSelected = Boolean(input.selected);\n var elementStore = {\n 'tag': inputTagName,\n 'type': null,\n 'id': inputId,\n 'name': inputName,\n 'value': '',\n 'checked': false,\n 'options': []\n };\n if ('input' === inputTagName || 'textarea' === inputTagName) {\n elementStore['type'] = inputType;\n if ('input' !== inputTagName) {\n elementStore['value'] = inputValue;\n return elementStore;\n }\n switch (inputType) {\n case 'checkbox':\n case 'radio':\n elementStore['checked'] = inputSelected;\n elementStore['value'] = inputValue;\n return elementStore;\n case 'image':\n case 'button':\n case 'submit':\n case 'reset':\n default:\n // These types don't need any config and thus need no update, they only were stored because they match \"input\"\n return elementStore;\n }\n }\n else if ('select' === inputTagName) {\n var childNodes = Array.prototype.slice.call(inputChildNodes);\n var options = childNodes.map(function (option, i) {\n return { value: option['value'], selected: Boolean(option['selected']) };\n });\n elementStore['options'] = options;\n return elementStore;\n }\n return elementStore;\n });\n}\nexports.__getInputValues = __getInputValues;\n/**\n * set input values\n *\n * Extended by: Gabriel Schuster \n * WIP refactor by: PatrickJS\n */\nfunction __setInputValues($inputs) {\n var inputs = document.querySelectorAll('input, textarea');\n $inputs.forEach(function (store, i) {\n if ('input' === store.tag || 'textarea' === store.tag) {\n if ('input' === store.tag && ('checkbox' === store.type || 'radio' === store.type)) {\n var selector = 'input' + (null !== store.id ? '#' + store.id : '') + '[type=\"' + store.type + '\"]' + (null !== store.name ? '[name=\"' + store.name + '\"]' : '') +\n '[value=\"' + store.value + '\"]';\n var element = document.body.querySelector(selector);\n if (element && Boolean(store['checked'])) {\n element['checked'] = 'checked';\n element.dispatchEvent(new CustomEvent('input', { detail: element['checked'] }));\n }\n }\n else if ('input' === store.tagName.toLowerCase() &&\n ('image' === store.type || 'button' === store.type || 'submit' === store.type || 'reset' === store.type)) {\n // These types don't need any config and thus need no update, they only were stored because they match \"input\"\n }\n else {\n if (null === store.id && null === store.name) {\n if (store.value.length &&\n inputs[i] &&\n inputs[i].tagName.toLowerCase() === store.tag &&\n ('textarea' === store.tag || inputs[i].getAttribute('type') === store.type) &&\n ('string' !== typeof inputs[i].id || !inputs[i].id.length) &&\n ('string' !== typeof inputs[i].getAttribute('name') ||\n !inputs[i].getAttribute('name').length)) {\n inputs[i]['value'] = store.value;\n inputs[i].dispatchEvent(new CustomEvent('input', { detail: inputs[i]['value'] }));\n }\n }\n else {\n var selector = 'input' +\n (null !== store.id ? '#' + store.id : '') + ('input' === store.tag ? '[type=\"' + store.type + '\"]' : '') +\n (null !== store.name ? '[name=\"' + store.name + '\"]' : '');\n var element = document.body.querySelector(selector);\n if (element && store.value.length) {\n element['value'] = store.value;\n element.dispatchEvent(new CustomEvent('input', { detail: element['value'] }));\n }\n }\n }\n }\n else if ('select' === store.tag) {\n var select_1 = null;\n if (null === store.id && null === store.name) {\n if (inputs[i] && inputs[i].tagName.toLowerCase() === store.tag && ('string' !== typeof inputs[i].id || !inputs[i].id.length) &&\n ('string' !== typeof inputs[i].getAttribute('name') || !inputs[i].getAttribute('name').length)) {\n select_1 = inputs[i];\n }\n }\n else {\n var selector = 'select' + (null !== store.id ? '#' + store.id : '') + (null !== store.name ? '[name=\"' + store.name + '\"]' : '');\n var element = document.body.querySelector(selector);\n if (element) {\n select_1 = element;\n }\n }\n if (select_1) {\n store.options.forEach(function (storedOption, j) {\n var option = select_1.querySelector('option[value=\"' + storedOption.value + '\"]');\n if (!option &&\n select_1.childNodes[j] &&\n ('string' !== typeof select_1.childNodes[j]['value'] || !select_1.childNodes[j]['value'].length)) {\n option = select_1.childNodes[j];\n }\n if (option && !!storedOption.selected) {\n option['selected'] = 'selected';\n option.dispatchEvent(new CustomEvent('input', { detail: option['selected'] }));\n }\n });\n }\n }\n });\n}\nexports.__setInputValues = __setInputValues;\nfunction __createInputTransfer() {\n var $inputs = __getInputValues();\n return function restoreInputValues() {\n return __setInputValues($inputs);\n };\n}\nexports.__createInputTransfer = __createInputTransfer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Hot Module Replacement\nfunction identity(val) {\n return val;\n}\nfunction bootloader(main, before, after) {\n if (typeof main === 'object') {\n var _main = main.main;\n before = main.before;\n after = main.after;\n main = _main;\n }\n before = before || identity;\n after = after || identity;\n var readyState = document.readyState;\n function __domReadyHandler() {\n document.removeEventListener('DOMContentLoaded', __domReadyHandler);\n after(main(before(readyState)));\n }\n switch (readyState) {\n case 'loading':\n document.addEventListener('DOMContentLoaded', __domReadyHandler);\n break;\n case 'interactive':\n case 'complete':\n default:\n after(main(before(readyState)));\n }\n}\nexports.bootloader = bootloader;\n// create new host elements and remove the old elements\nfunction createNewHosts(cmps) {\n var components = Array.prototype.map.call(cmps, function (componentNode) {\n var newNode = document.createElement(componentNode.tagName);\n var parentNode = componentNode.parentNode;\n var currentDisplay = newNode.style.display;\n newNode.style.display = 'none';\n parentNode.insertBefore(newNode, componentNode);\n function removeOldHost() {\n newNode.style.display = currentDisplay;\n try {\n parentNode.removeChild(componentNode);\n }\n catch (e) { }\n }\n return removeOldHost;\n });\n return function removeOldHosts() {\n components.forEach(function (removeOldHost) { return removeOldHost(); });\n };\n}\nexports.createNewHosts = createNewHosts;\n// remove old styles\nfunction removeNgStyles() {\n var docHead = document.head;\n var _styles = docHead.querySelectorAll('style');\n var styles = Array.prototype.slice.call(_styles);\n styles\n .filter(function (style) { return style.innerText.indexOf('_ng') !== -1; })\n .map(function (el) { return docHead.removeChild(el); });\n}\nexports.removeNgStyles = removeNgStyles;\n// get input values\nfunction getInputValues() {\n var _inputs = document.querySelectorAll('input');\n var inputs = Array.prototype.slice.call(_inputs);\n return inputs.map(function (input) { return input.value; });\n}\nexports.getInputValues = getInputValues;\n// set input values\nfunction setInputValues(_inputs) {\n var inputs = document.querySelectorAll('input');\n if (_inputs && inputs.length === _inputs.length) {\n _inputs.forEach(function (value, i) {\n var el = inputs[i];\n el.value = value;\n el.dispatchEvent(new CustomEvent('input', { detail: el.value }));\n });\n // clear array\n _inputs.length = 0;\n }\n}\nexports.setInputValues = setInputValues;\n// get/set input values\nfunction createInputTransfer() {\n var _inputs = getInputValues();\n return function restoreInputValues() {\n return setInputValues(_inputs);\n };\n}\nexports.createInputTransfer = createInputTransfer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MODULE_CONFIG = {\n 'OnInit': 'hmrOnInit',\n 'OnStatus': 'hmrOnStatus',\n 'OnCheck': 'hmrOnCheck',\n 'OnDecline': 'hmrOnDecline',\n 'OnDestroy': 'hmrOnDestroy',\n 'AfterDestroy': 'hmrAfterDestroy'\n};\nfunction hmrModule(MODULE_REF, MODULE, CONFIG) {\n if (CONFIG === void 0) { CONFIG = exports.MODULE_CONFIG; }\n if (MODULE['hot']) {\n MODULE['hot']['accept']();\n if (MODULE_REF.instance[exports.MODULE_CONFIG['OnInit']]) {\n if (MODULE['hot']['data']) {\n MODULE_REF.instance[exports.MODULE_CONFIG['OnInit']](MODULE['hot']['data']);\n }\n }\n if (MODULE_REF.instance[exports.MODULE_CONFIG['OnStatus']]) {\n MODULE['hot']['apply'](function hmrOnStatus(status) {\n MODULE_REF.instance[exports.MODULE_CONFIG['OnStatus']](status);\n });\n }\n if (MODULE_REF.instance[exports.MODULE_CONFIG['OnCheck']]) {\n MODULE['hot']['check'](function hmrOnCheck(err, outdatedModules) {\n MODULE_REF.instance[exports.MODULE_CONFIG['OnCheck']](err, outdatedModules);\n });\n }\n if (MODULE_REF.instance[exports.MODULE_CONFIG['OnDecline']]) {\n MODULE['hot']['decline'](function hmrOnDecline(dependencies) {\n MODULE_REF.instance[exports.MODULE_CONFIG['OnDecline']](dependencies);\n });\n }\n MODULE['hot']['dispose'](function hmrOnDestroy(store) {\n if (MODULE_REF.instance[exports.MODULE_CONFIG['OnDestroy']]) {\n MODULE_REF.instance[exports.MODULE_CONFIG['OnDestroy']](store);\n }\n MODULE_REF.destroy();\n if (MODULE_REF.instance[exports.MODULE_CONFIG['AfterDestroy']]) {\n MODULE_REF.instance[exports.MODULE_CONFIG['AfterDestroy']](store);\n }\n });\n }\n return MODULE_REF;\n}\nexports.hmrModule = hmrModule;\n","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Hot Module Replacement\n__export(require(\"./helpers\"));\n__export(require(\"./experimental\"));\n__export(require(\"./hmr\"));\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\n/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nvar escapeHtml_1 = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar richTextTypes_es5 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar commonjsGlobal$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global_1 =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof commonjsGlobal$1 == 'object' && commonjsGlobal$1) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\nvar fails = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n// Detect IE8's incomplete defineProperty implementation\nvar descriptors = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\nvar call = Function.prototype.call;\n\nvar functionCall = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nvar f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\nvar objectPropertyIsEnumerable = {\n\tf: f\n};\n\nvar createPropertyDescriptor = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call$1 = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call$1);\n\nvar functionUncurryThis = bind ? function (fn) {\n return fn && callBind(call$1, fn);\n} : function (fn) {\n return fn && function () {\n return call$1.apply(fn, arguments);\n };\n};\n\nvar toString = functionUncurryThis({}.toString);\nvar stringSlice = functionUncurryThis(''.slice);\n\nvar classofRaw = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\nvar Object$1 = global_1.Object;\nvar split = functionUncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar indexedObject = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object$1('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classofRaw(it) == 'String' ? split(it, '') : Object$1(it);\n} : Object$1;\n\nvar TypeError = global_1.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nvar requireObjectCoercible = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n// toObject with fallback for non-array-like ES3 strings\n\n\n\nvar toIndexedObject = function (it) {\n return indexedObject(requireObjectCoercible(it));\n};\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nvar isCallable = function (argument) {\n return typeof argument == 'function';\n};\n\nvar isObject = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nvar getBuiltIn = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global_1[namespace]) : global_1[namespace] && global_1[namespace][method];\n};\n\nvar objectIsPrototypeOf = functionUncurryThis({}.isPrototypeOf);\n\nvar engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';\n\nvar process = global_1.process;\nvar Deno = global_1.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && engineUserAgent) {\n match = engineUserAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = engineUserAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nvar engineV8Version = version;\n\n/* eslint-disable es/no-symbol -- required for testing */\n\n\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && engineV8Version && engineV8Version < 41;\n});\n\n/* eslint-disable es/no-symbol -- required for testing */\n\n\nvar useSymbolAsUid = nativeSymbol\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\nvar Object$2 = global_1.Object;\n\nvar isSymbol = useSymbolAsUid ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && objectIsPrototypeOf($Symbol.prototype, Object$2(it));\n};\n\nvar String$1 = global_1.String;\n\nvar tryToString = function (argument) {\n try {\n return String$1(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\nvar TypeError$1 = global_1.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nvar aCallable = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError$1(tryToString(argument) + ' is not a function');\n};\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nvar getMethod = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\nvar TypeError$2 = global_1.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nvar ordinaryToPrimitive = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = functionCall(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;\n throw TypeError$2(\"Can't convert object to primitive value\");\n};\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar setGlobal = function (key, value) {\n try {\n defineProperty(global_1, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global_1[key] = value;\n } return value;\n};\n\nvar SHARED = '__core-js_shared__';\nvar store = global_1[SHARED] || setGlobal(SHARED, {});\n\nvar sharedStore = store;\n\nvar shared = createCommonjsModule(function (module) {\n(module.exports = function (key, value) {\n return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.19.1',\n mode: 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n});\n\nvar Object$3 = global_1.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nvar toObject = function (argument) {\n return Object$3(requireObjectCoercible(argument));\n};\n\nvar hasOwnProperty = functionUncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nvar hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString$1 = functionUncurryThis(1.0.toString);\n\nvar uid = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$1(++id + postfix, 36);\n};\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol$1 = global_1.Symbol;\nvar symbolFor = Symbol$1 && Symbol$1['for'];\nvar createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;\n\nvar wellKnownSymbol = function (name) {\n if (!hasOwnProperty_1(WellKnownSymbolsStore, name) || !(nativeSymbol || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (nativeSymbol && hasOwnProperty_1(Symbol$1, name)) {\n WellKnownSymbolsStore[name] = Symbol$1[name];\n } else if (useSymbolAsUid && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\nvar TypeError$3 = global_1.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nvar toPrimitive = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = functionCall(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError$3(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nvar toPropertyKey = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\nvar document$1 = global_1.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document$1) && isObject(document$1.createElement);\n\nvar documentCreateElement = function (it) {\n return EXISTS ? document$1.createElement(it) : {};\n};\n\n// Thank's IE8 for his funny defineProperty\nvar ie8DomDefine = !descriptors && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(documentCreateElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nvar f$1 = descriptors ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (ie8DomDefine) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwnProperty_1(O, P)) return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f, O, P), O[P]);\n};\n\nvar objectGetOwnPropertyDescriptor = {\n\tf: f$1\n};\n\nvar String$2 = global_1.String;\nvar TypeError$4 = global_1.TypeError;\n\n// `Assert: Type(argument) is Object`\nvar anObject = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError$4(String$2(argument) + ' is not an object');\n};\n\nvar TypeError$5 = global_1.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nvar f$2 = descriptors ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (ie8DomDefine) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError$5('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\nvar objectDefineProperty = {\n\tf: f$2\n};\n\nvar createNonEnumerableProperty = descriptors ? function (object, key, value) {\n return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\nvar functionToString = functionUncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(sharedStore.inspectSource)) {\n sharedStore.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nvar inspectSource = sharedStore.inspectSource;\n\nvar WeakMap = global_1.WeakMap;\n\nvar nativeWeakMap = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\nvar keys = shared('keys');\n\nvar sharedKey = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\nvar hiddenKeys = {};\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError$6 = global_1.TypeError;\nvar WeakMap$1 = global_1.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$6('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (nativeWeakMap || sharedStore.state) {\n var store$1 = sharedStore.state || (sharedStore.state = new WeakMap$1());\n var wmget = functionUncurryThis(store$1.get);\n var wmhas = functionUncurryThis(store$1.has);\n var wmset = functionUncurryThis(store$1.set);\n set = function (it, metadata) {\n if (wmhas(store$1, it)) throw new TypeError$6(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store$1, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store$1, it) || {};\n };\n has = function (it) {\n return wmhas(store$1, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwnProperty_1(it, STATE)) throw new TypeError$6(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwnProperty_1(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwnProperty_1(it, STATE);\n };\n}\n\nvar internalState = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\nvar FunctionPrototype$1 = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = descriptors && Object.getOwnPropertyDescriptor;\n\nvar EXISTS$1 = hasOwnProperty_1(FunctionPrototype$1, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS$1 && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS$1 && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));\n\nvar functionName = {\n EXISTS: EXISTS$1,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\nvar redefine = createCommonjsModule(function (module) {\nvar CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;\n\nvar getInternalState = internalState.get;\nvar enforceInternalState = internalState.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 name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global_1) {\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 isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n});\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nvar toIntegerOrInfinity = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\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).\nvar toAbsoluteIndex = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\nvar min$1 = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nvar toLength = function (argument) {\n return argument > 0 ? min$1(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nvar lengthOfArrayLike = function (obj) {\n return toLength(obj.length);\n};\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 = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\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\nvar arrayIncludes = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\nvar indexOf = arrayIncludes.indexOf;\n\n\nvar push = functionUncurryThis([].push);\n\nvar objectKeysInternal = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwnProperty_1(hiddenKeys, key) && hasOwnProperty_1(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwnProperty_1(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n// IE8- don't enum bug keys\nvar enumBugKeys = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\nvar hiddenKeys$1 = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nvar f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return objectKeysInternal(O, hiddenKeys$1);\n};\n\nvar objectGetOwnPropertyNames = {\n\tf: f$3\n};\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nvar f$4 = Object.getOwnPropertySymbols;\n\nvar objectGetOwnPropertySymbols = {\n\tf: f$4\n};\n\nvar concat = functionUncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nvar ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = objectGetOwnPropertyNames.f(anObject(it));\n var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\nvar copyConstructorProperties = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = objectDefineProperty.f;\n var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwnProperty_1(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\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 : isCallable(detection) ? 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\nvar isForced_1 = isForced;\n\nvar getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n\n\n\n\n\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 options.name - the .name of the function if it does not match the key\n*/\nvar _export = 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_1;\n } else if (STATIC) {\n target = global_1[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global_1[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor$1(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced_1(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\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nvar objectKeys = Object.keys || function keys(O) {\n return objectKeysInternal(O, enumBugKeys);\n};\n\nvar $propertyIsEnumerable$1 = objectPropertyIsEnumerable.f;\n\nvar propertyIsEnumerable = functionUncurryThis($propertyIsEnumerable$1);\nvar push$1 = functionUncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod$1 = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!descriptors || propertyIsEnumerable(O, key)) {\n push$1(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nvar objectToArray = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod$1(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod$1(false)\n};\n\nvar $values = objectToArray.values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n_export({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n\nvar path = global_1;\n\nvar values = path.Object.values;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nvar objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) objectDefineProperty.f(O, key = keys[index++], props[key]);\n return O;\n};\n\nvar html = getBuiltIn('document', 'documentElement');\n\n/* global ActiveXObject -- old IE, WSH */\n\n\n\n\n\n\n\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nvar objectCreate = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : objectDefineProperties(result, Properties);\n};\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n objectDefineProperty.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: objectCreate(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nvar addToUnscopables = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\nvar $includes = arrayIncludes.includes;\n\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n_export({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\nvar entryUnbind = function (CONSTRUCTOR, METHOD) {\n return functionUncurryThis(global_1[CONSTRUCTOR].prototype[METHOD]);\n};\n\nvar includes = entryUnbind('Array', 'includes');\n\n/**\r\n * Map of all Contentful block types. Blocks contain inline or block nodes.\r\n */\r\nvar BLOCKS;\r\n(function (BLOCKS) {\r\n BLOCKS[\"DOCUMENT\"] = \"document\";\r\n BLOCKS[\"PARAGRAPH\"] = \"paragraph\";\r\n BLOCKS[\"HEADING_1\"] = \"heading-1\";\r\n BLOCKS[\"HEADING_2\"] = \"heading-2\";\r\n BLOCKS[\"HEADING_3\"] = \"heading-3\";\r\n BLOCKS[\"HEADING_4\"] = \"heading-4\";\r\n BLOCKS[\"HEADING_5\"] = \"heading-5\";\r\n BLOCKS[\"HEADING_6\"] = \"heading-6\";\r\n BLOCKS[\"OL_LIST\"] = \"ordered-list\";\r\n BLOCKS[\"UL_LIST\"] = \"unordered-list\";\r\n BLOCKS[\"LIST_ITEM\"] = \"list-item\";\r\n BLOCKS[\"HR\"] = \"hr\";\r\n BLOCKS[\"QUOTE\"] = \"blockquote\";\r\n BLOCKS[\"EMBEDDED_ENTRY\"] = \"embedded-entry-block\";\r\n BLOCKS[\"EMBEDDED_ASSET\"] = \"embedded-asset-block\";\r\n BLOCKS[\"TABLE\"] = \"table\";\r\n BLOCKS[\"TABLE_ROW\"] = \"table-row\";\r\n BLOCKS[\"TABLE_CELL\"] = \"table-cell\";\r\n BLOCKS[\"TABLE_HEADER_CELL\"] = \"table-header-cell\";\r\n})(BLOCKS || (BLOCKS = {}));\r\nvar BLOCKS$1 = BLOCKS;\n\n/**\r\n * Map of all Contentful inline types. Inline contain inline or text nodes.\r\n */\r\nvar INLINES;\r\n(function (INLINES) {\r\n INLINES[\"HYPERLINK\"] = \"hyperlink\";\r\n INLINES[\"ENTRY_HYPERLINK\"] = \"entry-hyperlink\";\r\n INLINES[\"ASSET_HYPERLINK\"] = \"asset-hyperlink\";\r\n INLINES[\"EMBEDDED_ENTRY\"] = \"embedded-entry-inline\";\r\n})(INLINES || (INLINES = {}));\r\nvar INLINES$1 = INLINES;\n\n/**\r\n * Map of all Contentful marks.\r\n */\r\nvar MARKS;\r\n(function (MARKS) {\r\n MARKS[\"BOLD\"] = \"bold\";\r\n MARKS[\"ITALIC\"] = \"italic\";\r\n MARKS[\"UNDERLINE\"] = \"underline\";\r\n MARKS[\"CODE\"] = \"code\";\r\n})(MARKS || (MARKS = {}));\r\nvar MARKS$1 = MARKS;\n\nvar _a;\r\n/**\r\n * Array of all top level block types.\r\n * Only these block types can be the direct children of the document.\r\n */\r\nvar TOP_LEVEL_BLOCKS = [\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n BLOCKS$1.OL_LIST,\r\n BLOCKS$1.UL_LIST,\r\n BLOCKS$1.HR,\r\n BLOCKS$1.QUOTE,\r\n BLOCKS$1.EMBEDDED_ENTRY,\r\n BLOCKS$1.EMBEDDED_ASSET,\r\n BLOCKS$1.TABLE,\r\n];\r\n/**\r\n * Array of all allowed block types inside list items\r\n */\r\nvar LIST_ITEM_BLOCKS = [\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n BLOCKS$1.OL_LIST,\r\n BLOCKS$1.UL_LIST,\r\n BLOCKS$1.HR,\r\n BLOCKS$1.QUOTE,\r\n BLOCKS$1.EMBEDDED_ENTRY,\r\n BLOCKS$1.EMBEDDED_ASSET,\r\n];\r\nvar TABLE_BLOCKS = [\r\n BLOCKS$1.TABLE,\r\n BLOCKS$1.TABLE_ROW,\r\n BLOCKS$1.TABLE_CELL,\r\n BLOCKS$1.TABLE_HEADER_CELL,\r\n];\r\n/**\r\n * Array of all void block types\r\n */\r\nvar VOID_BLOCKS = [BLOCKS$1.HR, BLOCKS$1.EMBEDDED_ENTRY, BLOCKS$1.EMBEDDED_ASSET];\r\n/**\r\n * Dictionary of all container block types, and the set block types they accept as children.\r\n *\r\n * Note: This does not include `[BLOCKS.DOCUMENT]: TOP_LEVEL_BLOCKS`\r\n */\r\nvar CONTAINERS = (_a = {},\r\n _a[BLOCKS$1.OL_LIST] = [BLOCKS$1.LIST_ITEM],\r\n _a[BLOCKS$1.UL_LIST] = [BLOCKS$1.LIST_ITEM],\r\n _a[BLOCKS$1.LIST_ITEM] = LIST_ITEM_BLOCKS,\r\n _a[BLOCKS$1.QUOTE] = [BLOCKS$1.PARAGRAPH],\r\n _a[BLOCKS$1.TABLE] = [BLOCKS$1.TABLE_ROW],\r\n _a[BLOCKS$1.TABLE_ROW] = [BLOCKS$1.TABLE_CELL, BLOCKS$1.TABLE_HEADER_CELL],\r\n _a[BLOCKS$1.TABLE_CELL] = [BLOCKS$1.PARAGRAPH],\r\n _a[BLOCKS$1.TABLE_HEADER_CELL] = [BLOCKS$1.PARAGRAPH],\r\n _a);\r\n/**\r\n * Array of all block types that may contain text and inline nodes.\r\n */\r\nvar TEXT_CONTAINERS = [\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n];\r\n/**\r\n * Node types before `tables` release.\r\n */\r\nvar V1_NODE_TYPES = [\r\n BLOCKS$1.DOCUMENT,\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n BLOCKS$1.OL_LIST,\r\n BLOCKS$1.UL_LIST,\r\n BLOCKS$1.LIST_ITEM,\r\n BLOCKS$1.HR,\r\n BLOCKS$1.QUOTE,\r\n BLOCKS$1.EMBEDDED_ENTRY,\r\n BLOCKS$1.EMBEDDED_ASSET,\r\n INLINES$1.HYPERLINK,\r\n INLINES$1.ENTRY_HYPERLINK,\r\n INLINES$1.ASSET_HYPERLINK,\r\n INLINES$1.EMBEDDED_ENTRY,\r\n 'text',\r\n];\n\n/**\r\n * A rich text document considered to be empty.\r\n * Any other document structure than this is not considered empty.\r\n */\r\nvar EMPTY_DOCUMENT = {\r\n nodeType: BLOCKS$1.DOCUMENT,\r\n data: {},\r\n content: [\r\n {\r\n nodeType: BLOCKS$1.PARAGRAPH,\r\n data: {},\r\n content: [\r\n {\r\n nodeType: 'text',\r\n value: '',\r\n marks: [],\r\n data: {},\r\n },\r\n ],\r\n },\r\n ],\r\n};\n\n/**\r\n * Checks if the node is an instance of Inline.\r\n */\r\nfunction isInline(node) {\r\n return Object.values(INLINES$1).includes(node.nodeType);\r\n}\r\n/**\r\n * Checks if the node is an instance of Block.\r\n */\r\nfunction isBlock(node) {\r\n return Object.values(BLOCKS$1).includes(node.nodeType);\r\n}\r\n/**\r\n * Checks if the node is an instance of Text.\r\n */\r\nfunction isText(node) {\r\n return node.nodeType === 'text';\r\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tisInline: isInline,\n\tisBlock: isBlock,\n\tisText: isText\n});\n\nexports.BLOCKS = BLOCKS$1;\nexports.CONTAINERS = CONTAINERS;\nexports.EMPTY_DOCUMENT = EMPTY_DOCUMENT;\nexports.INLINES = INLINES$1;\nexports.LIST_ITEM_BLOCKS = LIST_ITEM_BLOCKS;\nexports.MARKS = MARKS$1;\nexports.TABLE_BLOCKS = TABLE_BLOCKS;\nexports.TEXT_CONTAINERS = TEXT_CONTAINERS;\nexports.TOP_LEVEL_BLOCKS = TOP_LEVEL_BLOCKS;\nexports.V1_NODE_TYPES = V1_NODE_TYPES;\nexports.VOID_BLOCKS = VOID_BLOCKS;\nexports.helpers = helpers;\n\n});\n\nunwrapExports(richTextTypes_es5);\nvar richTextTypes_es5_1 = richTextTypes_es5.BLOCKS;\nvar richTextTypes_es5_2 = richTextTypes_es5.CONTAINERS;\nvar richTextTypes_es5_3 = richTextTypes_es5.EMPTY_DOCUMENT;\nvar richTextTypes_es5_4 = richTextTypes_es5.INLINES;\nvar richTextTypes_es5_5 = richTextTypes_es5.LIST_ITEM_BLOCKS;\nvar richTextTypes_es5_6 = richTextTypes_es5.MARKS;\nvar richTextTypes_es5_7 = richTextTypes_es5.TABLE_BLOCKS;\nvar richTextTypes_es5_8 = richTextTypes_es5.TEXT_CONTAINERS;\nvar richTextTypes_es5_9 = richTextTypes_es5.TOP_LEVEL_BLOCKS;\nvar richTextTypes_es5_10 = richTextTypes_es5.V1_NODE_TYPES;\nvar richTextTypes_es5_11 = richTextTypes_es5.VOID_BLOCKS;\nvar richTextTypes_es5_12 = richTextTypes_es5.helpers;\n\nvar _a, _b;\r\nvar attributeValue = function (value) { return \"\\\"\" + value.replace(/\"/g, '"') + \"\\\"\"; };\r\nvar defaultNodeRenderers = (_a = {},\r\n _a[richTextTypes_es5_1.PARAGRAPH] = function (node, next) { return \"

\" + next(node.content) + \"

\"; },\r\n _a[richTextTypes_es5_1.HEADING_1] = function (node, next) { return \"

\" + next(node.content) + \"

\"; },\r\n _a[richTextTypes_es5_1.HEADING_2] = function (node, next) { return \"

\" + next(node.content) + \"

\"; },\r\n _a[richTextTypes_es5_1.HEADING_3] = function (node, next) { return \"

\" + next(node.content) + \"

\"; },\r\n _a[richTextTypes_es5_1.HEADING_4] = function (node, next) { return \"

\" + next(node.content) + \"

\"; },\r\n _a[richTextTypes_es5_1.HEADING_5] = function (node, next) { return \"
\" + next(node.content) + \"
\"; },\r\n _a[richTextTypes_es5_1.HEADING_6] = function (node, next) { return \"
\" + next(node.content) + \"
\"; },\r\n _a[richTextTypes_es5_1.EMBEDDED_ENTRY] = function (node, next) { return \"
\" + next(node.content) + \"
\"; },\r\n _a[richTextTypes_es5_1.UL_LIST] = function (node, next) { return \"\"; },\r\n _a[richTextTypes_es5_1.OL_LIST] = function (node, next) { return \"
    \" + next(node.content) + \"
\"; },\r\n _a[richTextTypes_es5_1.LIST_ITEM] = function (node, next) { return \"
  • \" + next(node.content) + \"
  • \"; },\r\n _a[richTextTypes_es5_1.QUOTE] = function (node, next) { return \"
    \" + next(node.content) + \"
    \"; },\r\n _a[richTextTypes_es5_1.HR] = function () { return '
    '; },\r\n _a[richTextTypes_es5_1.TABLE] = function (node, next) { return \"\" + next(node.content) + \"
    \"; },\r\n _a[richTextTypes_es5_1.TABLE_ROW] = function (node, next) { return \"\" + next(node.content) + \"\"; },\r\n _a[richTextTypes_es5_1.TABLE_HEADER_CELL] = function (node, next) { return \"\" + next(node.content) + \"\"; },\r\n _a[richTextTypes_es5_1.TABLE_CELL] = function (node, next) { return \"\" + next(node.content) + \"\"; },\r\n _a[richTextTypes_es5_4.ASSET_HYPERLINK] = function (node) { return defaultInline(richTextTypes_es5_4.ASSET_HYPERLINK, node); },\r\n _a[richTextTypes_es5_4.ENTRY_HYPERLINK] = function (node) { return defaultInline(richTextTypes_es5_4.ENTRY_HYPERLINK, node); },\r\n _a[richTextTypes_es5_4.EMBEDDED_ENTRY] = function (node) { return defaultInline(richTextTypes_es5_4.EMBEDDED_ENTRY, node); },\r\n _a[richTextTypes_es5_4.HYPERLINK] = function (node, next) {\r\n var href = typeof node.data.uri === 'string' ? node.data.uri : '';\r\n return \"\" + next(node.content) + \"\";\r\n },\r\n _a);\r\nvar defaultMarkRenderers = (_b = {},\r\n _b[richTextTypes_es5_6.BOLD] = function (text) { return \"\" + text + \"\"; },\r\n _b[richTextTypes_es5_6.ITALIC] = function (text) { return \"\" + text + \"\"; },\r\n _b[richTextTypes_es5_6.UNDERLINE] = function (text) { return \"\" + text + \"\"; },\r\n _b[richTextTypes_es5_6.CODE] = function (text) { return \"\" + text + \"\"; },\r\n _b);\r\nvar defaultInline = function (type, node) {\r\n return \"type: \" + escapeHtml_1(type) + \" id: \" + escapeHtml_1(node.data.target.sys.id) + \"\";\r\n};\r\n/**\r\n * Serialize a Contentful Rich Text `document` to an html string.\r\n */\r\nfunction documentToHtmlString(richTextDocument, options) {\r\n if (options === void 0) { options = {}; }\r\n if (!richTextDocument || !richTextDocument.content) {\r\n return '';\r\n }\r\n return nodeListToHtmlString(richTextDocument.content, {\r\n renderNode: __assign(__assign({}, defaultNodeRenderers), options.renderNode),\r\n renderMark: __assign(__assign({}, defaultMarkRenderers), options.renderMark),\r\n });\r\n}\r\nfunction nodeListToHtmlString(nodes, _a) {\r\n var renderNode = _a.renderNode, renderMark = _a.renderMark;\r\n return nodes\r\n .map(function (node) { return nodeToHtmlString(node, { renderNode: renderNode, renderMark: renderMark }); })\r\n .join('');\r\n}\r\nfunction nodeToHtmlString(node, _a) {\r\n var renderNode = _a.renderNode, renderMark = _a.renderMark;\r\n if (richTextTypes_es5_12.isText(node)) {\r\n var nodeValue = escapeHtml_1(node.value);\r\n if (node.marks.length > 0) {\r\n return node.marks.reduce(function (value, mark) {\r\n if (!renderMark[mark.type]) {\r\n return value;\r\n }\r\n return renderMark[mark.type](value);\r\n }, nodeValue);\r\n }\r\n return nodeValue;\r\n }\r\n else {\r\n var nextNode = function (nodes) { return nodeListToHtmlString(nodes, { renderMark: renderMark, renderNode: renderNode }); };\r\n if (!node.nodeType || !renderNode[node.nodeType]) {\r\n // TODO: Figure what to return when passed an unrecognized node.\r\n return '';\r\n }\r\n return renderNode[node.nodeType](node, nextNode);\r\n }\r\n}\n\nexports.documentToHtmlString = documentToHtmlString;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global_1 =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n\nvar fails = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n// Detect IE8's incomplete defineProperty implementation\nvar descriptors = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n\nvar call = Function.prototype.call;\n\nvar functionCall = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nvar f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n\nvar objectPropertyIsEnumerable = {\n\tf: f\n};\n\nvar createPropertyDescriptor = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call$1 = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call$1);\n\nvar functionUncurryThis = bind ? function (fn) {\n return fn && callBind(call$1, fn);\n} : function (fn) {\n return fn && function () {\n return call$1.apply(fn, arguments);\n };\n};\n\nvar toString = functionUncurryThis({}.toString);\nvar stringSlice = functionUncurryThis(''.slice);\n\nvar classofRaw = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n\nvar Object$1 = global_1.Object;\nvar split = functionUncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar indexedObject = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object$1('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classofRaw(it) == 'String' ? split(it, '') : Object$1(it);\n} : Object$1;\n\nvar TypeError = global_1.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nvar requireObjectCoercible = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n// toObject with fallback for non-array-like ES3 strings\n\n\n\nvar toIndexedObject = function (it) {\n return indexedObject(requireObjectCoercible(it));\n};\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nvar isCallable = function (argument) {\n return typeof argument == 'function';\n};\n\nvar isObject = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nvar getBuiltIn = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global_1[namespace]) : global_1[namespace] && global_1[namespace][method];\n};\n\nvar objectIsPrototypeOf = functionUncurryThis({}.isPrototypeOf);\n\nvar engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';\n\nvar process = global_1.process;\nvar Deno = global_1.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && engineUserAgent) {\n match = engineUserAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = engineUserAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nvar engineV8Version = version;\n\n/* eslint-disable es/no-symbol -- required for testing */\n\n\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && engineV8Version && engineV8Version < 41;\n});\n\n/* eslint-disable es/no-symbol -- required for testing */\n\n\nvar useSymbolAsUid = nativeSymbol\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n\nvar Object$2 = global_1.Object;\n\nvar isSymbol = useSymbolAsUid ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && objectIsPrototypeOf($Symbol.prototype, Object$2(it));\n};\n\nvar String$1 = global_1.String;\n\nvar tryToString = function (argument) {\n try {\n return String$1(argument);\n } catch (error) {\n return 'Object';\n }\n};\n\nvar TypeError$1 = global_1.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nvar aCallable = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError$1(tryToString(argument) + ' is not a function');\n};\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nvar getMethod = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n\nvar TypeError$2 = global_1.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nvar ordinaryToPrimitive = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = functionCall(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = functionCall(fn, input))) return val;\n throw TypeError$2(\"Can't convert object to primitive value\");\n};\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nvar setGlobal = function (key, value) {\n try {\n defineProperty(global_1, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global_1[key] = value;\n } return value;\n};\n\nvar SHARED = '__core-js_shared__';\nvar store = global_1[SHARED] || setGlobal(SHARED, {});\n\nvar sharedStore = store;\n\nvar shared = createCommonjsModule(function (module) {\n(module.exports = function (key, value) {\n return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.19.1',\n mode: 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n});\n\nvar Object$3 = global_1.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nvar toObject = function (argument) {\n return Object$3(requireObjectCoercible(argument));\n};\n\nvar hasOwnProperty = functionUncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nvar hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString$1 = functionUncurryThis(1.0.toString);\n\nvar uid = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$1(++id + postfix, 36);\n};\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol$1 = global_1.Symbol;\nvar symbolFor = Symbol$1 && Symbol$1['for'];\nvar createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;\n\nvar wellKnownSymbol = function (name) {\n if (!hasOwnProperty_1(WellKnownSymbolsStore, name) || !(nativeSymbol || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (nativeSymbol && hasOwnProperty_1(Symbol$1, name)) {\n WellKnownSymbolsStore[name] = Symbol$1[name];\n } else if (useSymbolAsUid && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n\nvar TypeError$3 = global_1.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nvar toPrimitive = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = functionCall(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError$3(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nvar toPropertyKey = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n\nvar document$1 = global_1.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document$1) && isObject(document$1.createElement);\n\nvar documentCreateElement = function (it) {\n return EXISTS ? document$1.createElement(it) : {};\n};\n\n// Thank's IE8 for his funny defineProperty\nvar ie8DomDefine = !descriptors && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(documentCreateElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nvar f$1 = descriptors ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (ie8DomDefine) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwnProperty_1(O, P)) return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f, O, P), O[P]);\n};\n\nvar objectGetOwnPropertyDescriptor = {\n\tf: f$1\n};\n\nvar String$2 = global_1.String;\nvar TypeError$4 = global_1.TypeError;\n\n// `Assert: Type(argument) is Object`\nvar anObject = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError$4(String$2(argument) + ' is not an object');\n};\n\nvar TypeError$5 = global_1.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nvar f$2 = descriptors ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (ie8DomDefine) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError$5('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\nvar objectDefineProperty = {\n\tf: f$2\n};\n\nvar createNonEnumerableProperty = descriptors ? function (object, key, value) {\n return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\nvar functionToString = functionUncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(sharedStore.inspectSource)) {\n sharedStore.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nvar inspectSource = sharedStore.inspectSource;\n\nvar WeakMap = global_1.WeakMap;\n\nvar nativeWeakMap = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n\nvar keys = shared('keys');\n\nvar sharedKey = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\nvar hiddenKeys = {};\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError$6 = global_1.TypeError;\nvar WeakMap$1 = global_1.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$6('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (nativeWeakMap || sharedStore.state) {\n var store$1 = sharedStore.state || (sharedStore.state = new WeakMap$1());\n var wmget = functionUncurryThis(store$1.get);\n var wmhas = functionUncurryThis(store$1.has);\n var wmset = functionUncurryThis(store$1.set);\n set = function (it, metadata) {\n if (wmhas(store$1, it)) throw new TypeError$6(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store$1, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store$1, it) || {};\n };\n has = function (it) {\n return wmhas(store$1, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwnProperty_1(it, STATE)) throw new TypeError$6(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwnProperty_1(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwnProperty_1(it, STATE);\n };\n}\n\nvar internalState = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\nvar FunctionPrototype$1 = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = descriptors && Object.getOwnPropertyDescriptor;\n\nvar EXISTS$1 = hasOwnProperty_1(FunctionPrototype$1, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS$1 && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS$1 && (!descriptors || (descriptors && getDescriptor(FunctionPrototype$1, 'name').configurable));\n\nvar functionName = {\n EXISTS: EXISTS$1,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n\nvar redefine = createCommonjsModule(function (module) {\nvar CONFIGURABLE_FUNCTION_NAME = functionName.CONFIGURABLE;\n\nvar getInternalState = internalState.get;\nvar enforceInternalState = internalState.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 name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwnProperty_1(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global_1) {\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 isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n});\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nvar toIntegerOrInfinity = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\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).\nvar toAbsoluteIndex = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\nvar min$1 = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nvar toLength = function (argument) {\n return argument > 0 ? min$1(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nvar lengthOfArrayLike = function (obj) {\n return toLength(obj.length);\n};\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 = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\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\nvar arrayIncludes = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n\nvar indexOf = arrayIncludes.indexOf;\n\n\nvar push = functionUncurryThis([].push);\n\nvar objectKeysInternal = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwnProperty_1(hiddenKeys, key) && hasOwnProperty_1(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwnProperty_1(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n\n// IE8- don't enum bug keys\nvar enumBugKeys = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\nvar hiddenKeys$1 = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nvar f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return objectKeysInternal(O, hiddenKeys$1);\n};\n\nvar objectGetOwnPropertyNames = {\n\tf: f$3\n};\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nvar f$4 = Object.getOwnPropertySymbols;\n\nvar objectGetOwnPropertySymbols = {\n\tf: f$4\n};\n\nvar concat = functionUncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nvar ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = objectGetOwnPropertyNames.f(anObject(it));\n var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\nvar copyConstructorProperties = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = objectDefineProperty.f;\n var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwnProperty_1(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\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 : isCallable(detection) ? 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\nvar isForced_1 = isForced;\n\nvar getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n\n\n\n\n\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 options.name - the .name of the function if it does not match the key\n*/\nvar _export = 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_1;\n } else if (STATIC) {\n target = global_1[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global_1[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor$1(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced_1(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\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nvar objectKeys = Object.keys || function keys(O) {\n return objectKeysInternal(O, enumBugKeys);\n};\n\nvar $propertyIsEnumerable$1 = objectPropertyIsEnumerable.f;\n\nvar propertyIsEnumerable = functionUncurryThis($propertyIsEnumerable$1);\nvar push$1 = functionUncurryThis([].push);\n\n// `Object.{ entries, values }` methods implementation\nvar createMethod$1 = function (TO_ENTRIES) {\n return function (it) {\n var O = toIndexedObject(it);\n var keys = objectKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) {\n key = keys[i++];\n if (!descriptors || propertyIsEnumerable(O, key)) {\n push$1(result, TO_ENTRIES ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n\nvar objectToArray = {\n // `Object.entries` method\n // https://tc39.es/ecma262/#sec-object.entries\n entries: createMethod$1(true),\n // `Object.values` method\n // https://tc39.es/ecma262/#sec-object.values\n values: createMethod$1(false)\n};\n\nvar $values = objectToArray.values;\n\n// `Object.values` method\n// https://tc39.es/ecma262/#sec-object.values\n_export({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n\nvar path = global_1;\n\nvar values = path.Object.values;\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nvar objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) objectDefineProperty.f(O, key = keys[index++], props[key]);\n return O;\n};\n\nvar html = getBuiltIn('document', 'documentElement');\n\n/* global ActiveXObject -- old IE, WSH */\n\n\n\n\n\n\n\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nvar objectCreate = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : objectDefineProperties(result, Properties);\n};\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n objectDefineProperty.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: objectCreate(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nvar addToUnscopables = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n\nvar $includes = arrayIncludes.includes;\n\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n_export({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n\nvar entryUnbind = function (CONSTRUCTOR, METHOD) {\n return functionUncurryThis(global_1[CONSTRUCTOR].prototype[METHOD]);\n};\n\nvar includes = entryUnbind('Array', 'includes');\n\n/**\r\n * Map of all Contentful block types. Blocks contain inline or block nodes.\r\n */\r\nvar BLOCKS;\r\n(function (BLOCKS) {\r\n BLOCKS[\"DOCUMENT\"] = \"document\";\r\n BLOCKS[\"PARAGRAPH\"] = \"paragraph\";\r\n BLOCKS[\"HEADING_1\"] = \"heading-1\";\r\n BLOCKS[\"HEADING_2\"] = \"heading-2\";\r\n BLOCKS[\"HEADING_3\"] = \"heading-3\";\r\n BLOCKS[\"HEADING_4\"] = \"heading-4\";\r\n BLOCKS[\"HEADING_5\"] = \"heading-5\";\r\n BLOCKS[\"HEADING_6\"] = \"heading-6\";\r\n BLOCKS[\"OL_LIST\"] = \"ordered-list\";\r\n BLOCKS[\"UL_LIST\"] = \"unordered-list\";\r\n BLOCKS[\"LIST_ITEM\"] = \"list-item\";\r\n BLOCKS[\"HR\"] = \"hr\";\r\n BLOCKS[\"QUOTE\"] = \"blockquote\";\r\n BLOCKS[\"EMBEDDED_ENTRY\"] = \"embedded-entry-block\";\r\n BLOCKS[\"EMBEDDED_ASSET\"] = \"embedded-asset-block\";\r\n BLOCKS[\"TABLE\"] = \"table\";\r\n BLOCKS[\"TABLE_ROW\"] = \"table-row\";\r\n BLOCKS[\"TABLE_CELL\"] = \"table-cell\";\r\n BLOCKS[\"TABLE_HEADER_CELL\"] = \"table-header-cell\";\r\n})(BLOCKS || (BLOCKS = {}));\r\nvar BLOCKS$1 = BLOCKS;\n\n/**\r\n * Map of all Contentful inline types. Inline contain inline or text nodes.\r\n */\r\nvar INLINES;\r\n(function (INLINES) {\r\n INLINES[\"HYPERLINK\"] = \"hyperlink\";\r\n INLINES[\"ENTRY_HYPERLINK\"] = \"entry-hyperlink\";\r\n INLINES[\"ASSET_HYPERLINK\"] = \"asset-hyperlink\";\r\n INLINES[\"EMBEDDED_ENTRY\"] = \"embedded-entry-inline\";\r\n})(INLINES || (INLINES = {}));\r\nvar INLINES$1 = INLINES;\n\n/**\r\n * Map of all Contentful marks.\r\n */\r\nvar MARKS;\r\n(function (MARKS) {\r\n MARKS[\"BOLD\"] = \"bold\";\r\n MARKS[\"ITALIC\"] = \"italic\";\r\n MARKS[\"UNDERLINE\"] = \"underline\";\r\n MARKS[\"CODE\"] = \"code\";\r\n})(MARKS || (MARKS = {}));\r\nvar MARKS$1 = MARKS;\n\nvar _a;\r\n/**\r\n * Array of all top level block types.\r\n * Only these block types can be the direct children of the document.\r\n */\r\nvar TOP_LEVEL_BLOCKS = [\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n BLOCKS$1.OL_LIST,\r\n BLOCKS$1.UL_LIST,\r\n BLOCKS$1.HR,\r\n BLOCKS$1.QUOTE,\r\n BLOCKS$1.EMBEDDED_ENTRY,\r\n BLOCKS$1.EMBEDDED_ASSET,\r\n BLOCKS$1.TABLE,\r\n];\r\n/**\r\n * Array of all allowed block types inside list items\r\n */\r\nvar LIST_ITEM_BLOCKS = [\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n BLOCKS$1.OL_LIST,\r\n BLOCKS$1.UL_LIST,\r\n BLOCKS$1.HR,\r\n BLOCKS$1.QUOTE,\r\n BLOCKS$1.EMBEDDED_ENTRY,\r\n BLOCKS$1.EMBEDDED_ASSET,\r\n];\r\nvar TABLE_BLOCKS = [\r\n BLOCKS$1.TABLE,\r\n BLOCKS$1.TABLE_ROW,\r\n BLOCKS$1.TABLE_CELL,\r\n BLOCKS$1.TABLE_HEADER_CELL,\r\n];\r\n/**\r\n * Array of all void block types\r\n */\r\nvar VOID_BLOCKS = [BLOCKS$1.HR, BLOCKS$1.EMBEDDED_ENTRY, BLOCKS$1.EMBEDDED_ASSET];\r\n/**\r\n * Dictionary of all container block types, and the set block types they accept as children.\r\n *\r\n * Note: This does not include `[BLOCKS.DOCUMENT]: TOP_LEVEL_BLOCKS`\r\n */\r\nvar CONTAINERS = (_a = {},\r\n _a[BLOCKS$1.OL_LIST] = [BLOCKS$1.LIST_ITEM],\r\n _a[BLOCKS$1.UL_LIST] = [BLOCKS$1.LIST_ITEM],\r\n _a[BLOCKS$1.LIST_ITEM] = LIST_ITEM_BLOCKS,\r\n _a[BLOCKS$1.QUOTE] = [BLOCKS$1.PARAGRAPH],\r\n _a[BLOCKS$1.TABLE] = [BLOCKS$1.TABLE_ROW],\r\n _a[BLOCKS$1.TABLE_ROW] = [BLOCKS$1.TABLE_CELL, BLOCKS$1.TABLE_HEADER_CELL],\r\n _a[BLOCKS$1.TABLE_CELL] = [BLOCKS$1.PARAGRAPH],\r\n _a[BLOCKS$1.TABLE_HEADER_CELL] = [BLOCKS$1.PARAGRAPH],\r\n _a);\r\n/**\r\n * Array of all block types that may contain text and inline nodes.\r\n */\r\nvar TEXT_CONTAINERS = [\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n];\r\n/**\r\n * Node types before `tables` release.\r\n */\r\nvar V1_NODE_TYPES = [\r\n BLOCKS$1.DOCUMENT,\r\n BLOCKS$1.PARAGRAPH,\r\n BLOCKS$1.HEADING_1,\r\n BLOCKS$1.HEADING_2,\r\n BLOCKS$1.HEADING_3,\r\n BLOCKS$1.HEADING_4,\r\n BLOCKS$1.HEADING_5,\r\n BLOCKS$1.HEADING_6,\r\n BLOCKS$1.OL_LIST,\r\n BLOCKS$1.UL_LIST,\r\n BLOCKS$1.LIST_ITEM,\r\n BLOCKS$1.HR,\r\n BLOCKS$1.QUOTE,\r\n BLOCKS$1.EMBEDDED_ENTRY,\r\n BLOCKS$1.EMBEDDED_ASSET,\r\n INLINES$1.HYPERLINK,\r\n INLINES$1.ENTRY_HYPERLINK,\r\n INLINES$1.ASSET_HYPERLINK,\r\n INLINES$1.EMBEDDED_ENTRY,\r\n 'text',\r\n];\n\n/**\r\n * A rich text document considered to be empty.\r\n * Any other document structure than this is not considered empty.\r\n */\r\nvar EMPTY_DOCUMENT = {\r\n nodeType: BLOCKS$1.DOCUMENT,\r\n data: {},\r\n content: [\r\n {\r\n nodeType: BLOCKS$1.PARAGRAPH,\r\n data: {},\r\n content: [\r\n {\r\n nodeType: 'text',\r\n value: '',\r\n marks: [],\r\n data: {},\r\n },\r\n ],\r\n },\r\n ],\r\n};\n\n/**\r\n * Checks if the node is an instance of Inline.\r\n */\r\nfunction isInline(node) {\r\n return Object.values(INLINES$1).includes(node.nodeType);\r\n}\r\n/**\r\n * Checks if the node is an instance of Block.\r\n */\r\nfunction isBlock(node) {\r\n return Object.values(BLOCKS$1).includes(node.nodeType);\r\n}\r\n/**\r\n * Checks if the node is an instance of Text.\r\n */\r\nfunction isText(node) {\r\n return node.nodeType === 'text';\r\n}\n\nvar helpers = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tisInline: isInline,\n\tisBlock: isBlock,\n\tisText: isText\n});\n\nexports.BLOCKS = BLOCKS$1;\nexports.CONTAINERS = CONTAINERS;\nexports.EMPTY_DOCUMENT = EMPTY_DOCUMENT;\nexports.INLINES = INLINES$1;\nexports.LIST_ITEM_BLOCKS = LIST_ITEM_BLOCKS;\nexports.MARKS = MARKS$1;\nexports.TABLE_BLOCKS = TABLE_BLOCKS;\nexports.TEXT_CONTAINERS = TEXT_CONTAINERS;\nexports.TOP_LEVEL_BLOCKS = TOP_LEVEL_BLOCKS;\nexports.V1_NODE_TYPES = V1_NODE_TYPES;\nexports.VOID_BLOCKS = VOID_BLOCKS;\nexports.helpers = helpers;\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nconst toString = (() => Object.prototype.toString)();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args)));\n }\n return new Observable(subscriber => {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n let unsubscribe;\n if (isEventTarget(sourceObj)) {\n const source = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = () => source.removeEventListener(eventName, handler, options);\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = () => source.off(eventName, handler);\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n const source = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = () => source.removeListener(eventName, handler);\n }\n else if (sourceObj && sourceObj.length) {\n for (let i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime = 0, periodOrScheduler, scheduler) {\n let period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(subscriber => {\n const due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period, subscriber\n });\n });\n}\nfunction dispatch(state) {\n const { index, period, subscriber } = state;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n","import { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race(...observables) {\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nexport class RaceOperator {\n call(subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n }\n}\nexport class RaceSubscriber extends OuterSubscriber {\n constructor(destination) {\n super(destination);\n this.hasFirst = false;\n this.observables = [];\n this.subscriptions = [];\n }\n _next(observable) {\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (let i = 0; i < len && !this.hasFirst; i++) {\n const observable = observables[i];\n const subscription = subscribeToResult(this, observable, undefined, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (let i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n let subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n }\n}\n","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport const NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n","import { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function zip(...observables) {\n const resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nexport class ZipOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class ZipSubscriber extends Subscriber {\n constructor(destination, resultSelector, values = Object.create(null)) {\n super(destination);\n this.resultSelector = resultSelector;\n this.iterators = [];\n this.active = 0;\n this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : undefined;\n }\n _next(value) {\n const iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n }\n _complete() {\n const iterators = this.iterators;\n const len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n const destination = this.destination;\n destination.add(iterator.subscribe());\n }\n else {\n this.active--;\n }\n }\n }\n notifyInactive() {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n }\n checkIterators() {\n const iterators = this.iterators;\n const len = iterators.length;\n const destination = this.destination;\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n let shouldComplete = false;\n const args = [];\n for (let i = 0; i < len; i++) {\n let iterator = iterators[i];\n let result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n }\n _tryresultSelector(args) {\n let result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\nclass StaticIterator {\n constructor(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n hasValue() {\n return true;\n }\n next() {\n const result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n }\n hasCompleted() {\n const nextResult = this.nextResult;\n return Boolean(nextResult && nextResult.done);\n }\n}\nclass StaticArrayIterator {\n constructor(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n [Symbol_iterator]() {\n return this;\n }\n next(value) {\n const i = this.index++;\n const array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n }\n hasValue() {\n return this.array.length > this.index;\n }\n hasCompleted() {\n return this.array.length === this.index;\n }\n}\nclass ZipBufferIterator extends SimpleOuterSubscriber {\n constructor(destination, parent, observable) {\n super(destination);\n this.parent = parent;\n this.observable = observable;\n this.stillUnsubscribed = true;\n this.buffer = [];\n this.isComplete = false;\n }\n [Symbol_iterator]() {\n return this;\n }\n next() {\n const buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n }\n hasValue() {\n return this.buffer.length > 0;\n }\n hasCompleted() {\n return this.buffer.length === 0 && this.isComplete;\n }\n notifyComplete() {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n }\n notifyNext(innerValue) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n }\n subscribe() {\n return innerSubscribe(this.observable, new SimpleInnerSubscriber(this));\n }\n}\n","import { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom(...args) {\n return (source) => {\n let project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n const observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nclass WithLatestFromOperator {\n constructor(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n }\n}\nclass WithLatestFromSubscriber extends OuterSubscriber {\n constructor(destination, observables, project) {\n super(destination);\n this.observables = observables;\n this.project = project;\n this.toRespond = [];\n const len = observables.length;\n this.values = new Array(len);\n for (let i = 0; i < len; i++) {\n this.toRespond.push(i);\n }\n for (let i = 0; i < len; i++) {\n let observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n this.values[outerIndex] = innerValue;\n const toRespond = this.toRespond;\n if (toRespond.length > 0) {\n const found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n }\n notifyComplete() {\n }\n _next(value) {\n if (this.toRespond.length === 0) {\n const args = [value, ...this.values];\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n }\n _tryProject(args) {\n let result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import * as i0 from '@angular/core';\nimport { Injectable, Directive, TemplateRef, EventEmitter, Input, Output, ContentChildren, Component, ViewEncapsulation, ElementRef, NgZone, ChangeDetectorRef, Optional, Host, NgModule, ChangeDetectionStrategy, Renderer2, forwardRef, Inject, PLATFORM_ID, LOCALE_ID, ViewChild, ContentChild, ViewContainerRef, ComponentFactoryResolver, Injector, ApplicationRef, RendererFactory2, Attribute, ViewChildren, HostBinding, InjectionToken } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule, isPlatformBrowser, getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames, formatDate, DOCUMENT, getLocaleDayPeriods } from '@angular/common';\nimport { Observable, EMPTY, of, Subject, fromEvent, timer, race, BehaviorSubject, combineLatest, NEVER, zip, merge } from 'rxjs';\nimport { endWith, takeUntil, filter, take, map, startWith, distinctUntilChanged, switchMap, tap, withLatestFrom, delay, mergeMap, skip, share } from 'rxjs/operators';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/forms';\n\nfunction NgbAccordion_ng_template_0_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_0_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r3 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngbPanelToggle\", panel_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", panel_r3.title, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r3.titleTpl == null ? null : panel_r3.titleTpl.templateRef);\n} }\nfunction NgbAccordion_ng_template_2_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵelementStart(1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_div_3_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵpropertyInterpolate(\"id\", panel_r5.id);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", panel_r5.id + \"-header\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.contentTpl == null ? null : panel_r5.contentTpl.templateRef) || null);\n} }\nconst _c0 = function (a0, a1) { return { $implicit: a0, opened: a1 }; };\nfunction NgbAccordion_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵelementStart(1, \"div\", 5);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbAccordion_ng_template_2_div_3_Template, 3, 3, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassMap(\"card \" + (panel_r5.cardClass || \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMap(\"card-header \" + (panel_r5.type ? \"bg-\" + panel_r5.type : ctx_r2.type ? \"bg-\" + ctx_r2.type : \"\"));\n ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", panel_r5.id, \"-header\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.headerTpl == null ? null : panel_r5.headerTpl.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(8, _c0, panel_r5, panel_r5.isOpen));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.destroyOnHide || panel_r5.isOpen || panel_r5.transitionRunning);\n} }\nfunction NgbAlert_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbAlert_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.close(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 2);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c3 = [\"*\"];\nfunction NgbCarousel_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_li_1_Template_li_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const slide_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); ctx_r5.focus(); return ctx_r5.select(slide_r4.id, ctx_r5.NgbSlideEventSource.INDICATOR); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r4 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", slide_r4.id === ctx_r0.activeId);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", \"slide-\" + slide_r4.id)(\"aria-controls\", \"slide-\" + slide_r4.id)(\"aria-selected\", slide_r4.id === ctx_r0.activeId);\n} }\nfunction NgbCarousel_div_3_ng_template_3_Template(rf, ctx) { }\nfunction NgbCarousel_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n ɵngcc0.ɵɵelementStart(1, \"span\", 8);\n ɵngcc0.ɵɵi18n(2, 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r7 = ctx.$implicit;\n const i_r8 = ctx.index;\n const c_r9 = ctx.count;\n ɵngcc0.ɵɵproperty(\"id\", \"slide-\" + slide_r7.id);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵi18nExp(i_r8 + 1)(c_r9);\n ɵngcc0.ɵɵi18nApply(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", slide_r7.tplRef);\n} }\nfunction NgbCarousel_a_4_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_4_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.arrowLeft(); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n ɵngcc0.ɵɵi18n(3, 13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbCarousel_a_5_Template(rf, ctx) { if (rf & 1) {\n const _r14 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_5_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.arrowRight(); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c10 = [\"defaultDayTemplate\"];\nconst _c11 = [\"content\"];\nfunction NgbDatepicker_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const date_r8 = ctx.date;\n const currentMonth_r9 = ctx.currentMonth;\n const selected_r10 = ctx.selected;\n const disabled_r11 = ctx.disabled;\n const focused_r12 = ctx.focused;\n ɵngcc0.ɵɵproperty(\"date\", date_r8)(\"currentMonth\", currentMonth_r9)(\"selected\", selected_r10)(\"disabled\", disabled_r11)(\"focused\", focused_r12);\n} }\nfunction NgbDatepicker_ng_template_2_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r16.i18n.getMonthLabel(month_r14.firstDate), \" \");\n} }\nfunction NgbDatepicker_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵtemplate(1, NgbDatepicker_ng_template_2_div_0_div_1_Template, 2, 1, \"div\", 10);\n ɵngcc0.ɵɵelement(2, \"ngb-datepicker-month\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ctx.$implicit;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.navigation === \"none\" || ctx_r13.displayMonths > 1 && ctx_r13.navigation === \"select\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"month\", month_r14.firstDate);\n} }\nfunction NgbDatepicker_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_2_div_0_Template, 3, 2, \"div\", 8);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.model.months);\n} }\nfunction NgbDatepicker_ngb_datepicker_navigation_5_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation\", 13);\n ɵngcc0.ɵɵlistener(\"navigate\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_navigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.onNavigateEvent($event); })(\"select\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onNavigateDateSelect($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r4.model.firstDate)(\"months\", ctx_r4.model.months)(\"disabled\", ctx_r4.model.disabled)(\"showSelect\", ctx_r4.model.navigation === \"select\")(\"prevDisabled\", ctx_r4.model.prevDisabled)(\"nextDisabled\", ctx_r4.model.nextDisabled)(\"selectBoxes\", ctx_r4.model.selectBoxes);\n} }\nfunction NgbDatepicker_ng_template_8_Template(rf, ctx) { }\nfunction NgbDatepicker_ng_template_9_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.i18n.getWeekLabel());\n} }\nfunction NgbDatepickerMonth_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const weekday_r4 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(weekday_r4);\n} }\nfunction NgbDatepickerMonth_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_div_0_div_1_Template, 2, 1, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_div_0_div_2_Template, 2, 1, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.viewModel.weekdays);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r7.i18n.getWeekNumerals(week_r5.number));\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const day_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.datepicker.dayTemplate)(\"ngTemplateOutletContext\", day_r10.context);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerMonth_ng_template_1_div_0_div_2_Template_div_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r15); const day_r10 = restoredCtx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(3); ctx_r14.doSelect(day_r10); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template, 1, 2, \"ng-template\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r10 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"disabled\", day_r10.context.disabled)(\"hidden\", day_r10.hidden)(\"ngb-dp-today\", day_r10.context.today);\n ɵngcc0.ɵɵproperty(\"tabindex\", day_r10.tabindex);\n ɵngcc0.ɵɵattribute(\"aria-label\", day_r10.ariaLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !day_r10.hidden);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_1_Template, 2, 1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_ng_template_1_div_0_div_2_Template, 2, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", week_r5.days);\n} }\nfunction NgbDatepickerMonth_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_Template, 3, 2, \"div\", 7);\n} if (rf & 2) {\n const week_r5 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", !week_r5.collapsed);\n} }\nfunction NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation-select\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.select.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r0.date)(\"disabled\", ctx_r0.disabled)(\"months\", ctx_r0.selectBoxes.months)(\"years\", ctx_r0.selectBoxes.years);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_div_0_Template, 1, 0, \"div\", 9);\n ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_4_ng_template_0_div_3_Template, 1, 0, \"div\", 9);\n} if (rf & 2) {\n const month_r5 = ctx.$implicit;\n const i_r6 = ctx.index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.i18n.getMonthLabel(month_r5.firstDate), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 !== ctx_r4.months.length - 1);\n} }\nfunction NgbDatepickerNavigation_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_Template, 4, 3, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.months);\n} }\nconst _c20 = [\"ngbDatepickerDayView\", \"\"];\nconst _c21 = [\"month\"];\nconst _c22 = [\"year\"];\nfunction NgbDatepickerNavigationSelect_option_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const m_r4 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", m_r4);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.i18n.getMonthFullName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.i18n.getMonthShortName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n} }\nfunction NgbDatepickerNavigationSelect_option_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const y_r5 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", y_r5);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.i18n.getYearNumerals(y_r5));\n} }\nconst _c31 = [\"dialog\"];\nconst _c32 = [\"ngbNavOutlet\", \"\"];\nfunction NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template(rf, ctx) { }\nconst _c33 = function (a0) { return { $implicit: a0 }; };\nfunction NgbNavOutlet_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"item\", item_r1)(\"nav\", ctx_r2.nav)(\"role\", ctx_r2.paneRole);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (item_r1.contentTpl == null ? null : item_r1.contentTpl.templateRef) || null)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(5, _c33, item_r1.active || ctx_r2.isPanelTransitioning(item_r1)));\n} }\nfunction NgbNavOutlet_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_div_0_Template, 2, 7, \"div\", 1);\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", item_r1.isPanelInDom() || ctx_r0.isPanelTransitioning(item_r1));\n} }\nfunction NgbPagination_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 11);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 12);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 13);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0, \"...\");\n} }\nfunction NgbPagination_ng_template_10_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵtext(1, \"(current)\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_10_span_1_Template, 2, 0, \"span\", 14);\n} if (rf & 2) {\n const page_r19 = ctx.$implicit;\n const currentPage_r20 = ctx.currentPage;\n ɵngcc0.ɵɵtextInterpolate1(\" \", page_r19, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", page_r19 === currentPage_r20);\n} }\nfunction NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template(rf, ctx) { }\nconst _c42 = function (a1) { return { disabled: true, currentPage: a1 }; };\nfunction NgbPagination_ng_template_12_li_0_a_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 20);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const page_r22 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r27 = ɵngcc0.ɵɵnextContext();\n const _r8 = ɵngcc0.ɵɵreference(9);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r27.tplEllipsis == null ? null : ctx_r27.tplEllipsis.templateRef) || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c42, page_r22));\n} }\nfunction NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template(rf, ctx) { }\nconst _c43 = function (a0, a1, a2) { return { disabled: a0, $implicit: a1, currentPage: a2 }; };\nfunction NgbPagination_ng_template_12_li_0_a_2_Template(rf, ctx) { if (rf & 1) {\n const _r34 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 21);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_ng_template_12_li_0_a_2_Template_a_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r34); const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r32 = ɵngcc0.ɵɵnextContext(2); ctx_r32.selectPage(pageNumber_r26); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r35 = ɵngcc0.ɵɵnextContext();\n const disabled_r24 = ctx_r35.disabled;\n const page_r22 = ctx_r35.$implicit;\n const ctx_r28 = ɵngcc0.ɵɵnextContext();\n const _r10 = ɵngcc0.ɵɵreference(11);\n ɵngcc0.ɵɵattribute(\"tabindex\", disabled_r24 ? \"-1\" : null)(\"aria-disabled\", disabled_r24 ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r28.tplNumber == null ? null : ctx_r28.tplNumber.templateRef) || _r10)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c43, disabled_r24, pageNumber_r26, page_r22));\n} }\nfunction NgbPagination_ng_template_12_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_Template, 2, 4, \"a\", 18);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_12_li_0_a_2_Template, 2, 8, \"a\", 19);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ctx.$implicit;\n const ctx_r37 = ɵngcc0.ɵɵnextContext();\n const page_r22 = ctx_r37.$implicit;\n const disabled_r24 = ctx_r37.disabled;\n const ctx_r25 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", pageNumber_r26 === page_r22)(\"disabled\", ctx_r25.isEllipsis(pageNumber_r26) || disabled_r24);\n ɵngcc0.ɵɵattribute(\"aria-current\", pageNumber_r26 === page_r22 ? \"page\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r25.isEllipsis(pageNumber_r26));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r25.isEllipsis(pageNumber_r26));\n} }\nfunction NgbPagination_ng_template_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_12_li_0_Template, 3, 7, \"li\", 16);\n} if (rf & 2) {\n const pages_r23 = ctx.pages;\n ɵngcc0.ɵɵproperty(\"ngForOf\", pages_r23);\n} }\nfunction NgbPagination_li_15_ng_template_2_Template(rf, ctx) { }\nconst _c46 = function (a0, a1) { return { disabled: a0, currentPage: a1 }; };\nfunction NgbPagination_li_15_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 22);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_15_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(); ctx_r39.selectPage(1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_15_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r14.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r14.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r14.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r14.tplFirst == null ? null : ctx_r14.tplFirst.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r14.previousDisabled(), ctx_r14.page));\n} }\nfunction NgbPagination_li_16_ng_template_2_Template(rf, ctx) { }\nconst _c49 = function (a0) { return { disabled: a0 }; };\nfunction NgbPagination_li_16_Template(rf, ctx) { if (rf & 1) {\n const _r43 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 23);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_16_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r43); const ctx_r42 = ɵngcc0.ɵɵnextContext(); ctx_r42.selectPage(ctx_r42.page - 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_16_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r15.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r15.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r15.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r15.tplPrevious == null ? null : ctx_r15.tplPrevious.templateRef) || _r2)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(6, _c49, ctx_r15.previousDisabled()));\n} }\nfunction NgbPagination_ng_template_17_Template(rf, ctx) { }\nfunction NgbPagination_li_18_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_18_Template(rf, ctx) { if (rf & 1) {\n const _r46 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_18_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r46); const ctx_r45 = ɵngcc0.ɵɵnextContext(); ctx_r45.selectPage(ctx_r45.page + 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_18_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext();\n const _r4 = ɵngcc0.ɵɵreference(5);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r17.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r17.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r17.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r17.tplNext == null ? null : ctx_r17.tplNext.templateRef) || _r4)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r17.nextDisabled(), ctx_r17.page));\n} }\nfunction NgbPagination_li_19_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_19_Template(rf, ctx) { if (rf & 1) {\n const _r49 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵelementStart(1, \"a\", 25);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_19_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r49); const ctx_r48 = ɵngcc0.ɵɵnextContext(); ctx_r48.selectPage(ctx_r48.pageCount); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_19_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext();\n const _r6 = ɵngcc0.ɵɵreference(7);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r18.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r18.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r18.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r18.tplLast == null ? null : ctx_r18.tplLast.templateRef) || _r6)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r18.nextDisabled(), ctx_r18.page));\n} }\nconst _c54 = function (a0, a1, a2) { return { $implicit: a0, pages: a1, disabled: a2 }; };\nfunction NgbPopoverWindow_h3_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.title);\n} }\nfunction NgbPopoverWindow_h3_1_ng_template_3_Template(rf, ctx) { }\nfunction NgbPopoverWindow_h3_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"h3\", 3);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_ng_template_1_Template, 1, 1, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgbPopoverWindow_h3_1_ng_template_3_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r1 = ɵngcc0.ɵɵreference(2);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.isTitleTemplate() ? ctx_r0.title : _r1)(\"ngTemplateOutletContext\", ctx_r0.context);\n} }\nfunction NgbProgressbar_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵi18n(1, 2);\n ɵngcc0.ɵɵpipe(2, \"percent\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵi18nExp(ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r0.getValue() / ctx_r0.max));\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbRating_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const fill_r3 = ctx.fill;\n ɵngcc0.ɵɵtextInterpolate(fill_r3 === 100 ? \"\\u2605\" : \"\\u2606\");\n} }\nfunction NgbRating_ng_template_2_ng_template_3_Template(rf, ctx) { }\nfunction NgbRating_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbRating_ng_template_2_Template_span_mouseenter_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.enter(index_r4 + 1); })(\"click\", function NgbRating_ng_template_2_Template_span_click_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleClick(index_r4 + 1); });\n ɵngcc0.ɵɵtemplate(3, NgbRating_ng_template_2_ng_template_3_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const index_r4 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", index_r4 < ctx_r2.nextRate ? \"*\" : \" \", \")\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"cursor\", ctx_r2.isInteractive() ? \"pointer\" : \"default\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.starTemplate || ctx_r2.starTemplateFromContent || _r0)(\"ngTemplateOutletContext\", ctx_r2.contexts[index_r4]);\n} }\nfunction NgbTimepicker_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.changeHour(ctx_r8.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 14);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r0.isSmallSize)(\"btn-lg\", ctx_r0.isLargeSize)(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n} }\nfunction NgbTimepicker_button_5_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_5_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.changeHour(-ctx_r10.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n} }\nfunction NgbTimepicker_button_9_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_9_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.changeMinute(ctx_r12.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 17);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r2.isSmallSize)(\"btn-lg\", ctx_r2.isLargeSize)(\"disabled\", ctx_r2.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled);\n} }\nfunction NgbTimepicker_button_11_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_11_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.changeMinute(-ctx_r14.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 18);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r3.isSmallSize)(\"btn-lg\", ctx_r3.isLargeSize)(\"disabled\", ctx_r3.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled);\n} }\nfunction NgbTimepicker_div_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1, \":\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbTimepicker_div_13_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.changeSecond(ctx_r18.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 21);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r16.isSmallSize)(\"btn-lg\", ctx_r16.isLargeSize)(\"disabled\", ctx_r16.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r16.disabled);\n} }\nfunction NgbTimepicker_div_13_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.changeSecond(-ctx_r20.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 22);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r17.isSmallSize)(\"btn-lg\", ctx_r17.isLargeSize)(\"disabled\", ctx_r17.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r17.disabled);\n} }\nfunction NgbTimepicker_div_13_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtemplate(1, NgbTimepicker_div_13_button_1_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(2, \"input\", 20);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_div_13_Template_input_change_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.updateSecond($event.target.value); })(\"blur\", function NgbTimepicker_div_13_Template_input_blur_2_listener() { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.handleBlur(); })(\"input\", function NgbTimepicker_div_13_Template_input_input_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_div_13_Template_input_keydown_ArrowUp_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r26 = ɵngcc0.ɵɵnextContext(); ctx_r26.changeSecond(ctx_r26.secondStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_div_13_Template_input_keydown_ArrowDown_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r27 = ɵngcc0.ɵɵnextContext(); ctx_r27.changeSecond(-ctx_r27.secondStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_13_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx_r5.isSmallSize)(\"form-control-lg\", ctx_r5.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r5.formatMinSec(ctx_r5.model == null ? null : ctx_r5.model.second))(\"readOnly\", ctx_r5.readonlyInputs)(\"disabled\", ctx_r5.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n} }\nfunction NgbTimepicker_div_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 5);\n} }\nfunction NgbTimepicker_div_15_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵi18n(1, 27);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵi18nExp(ctx_r28.i18n.getAfternoonPeriod());\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbTimepicker_div_15_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵi18n(0, 28);\n} if (rf & 2) {\n const ctx_r30 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵi18nExp(ctx_r30.i18n.getMorningPeriod());\n ɵngcc0.ɵɵi18nApply(0);\n} }\nfunction NgbTimepicker_div_15_Template(rf, ctx) { if (rf & 1) {\n const _r32 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23);\n ɵngcc0.ɵɵelementStart(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_15_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r32); const ctx_r31 = ɵngcc0.ɵɵnextContext(); return ctx_r31.toggleMeridian(); });\n ɵngcc0.ɵɵtemplate(2, NgbTimepicker_div_15_ng_container_2_Template, 2, 1, \"ng-container\", 25);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_15_ng_template_3_Template, 1, 1, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r29 = ɵngcc0.ɵɵreference(4);\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r7.isSmallSize)(\"btn-lg\", ctx_r7.isLargeSize)(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.model && ctx_r7.model.hour >= 12)(\"ngIfElse\", _r29);\n} }\nfunction NgbToast_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.header);\n} }\nfunction NgbToast_ng_template_2_ng_template_1_Template(rf, ctx) { }\nfunction NgbToast_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtemplate(1, NgbToast_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementStart(2, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbToast_ng_template_2_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.hide(); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 7);\n ɵngcc0.ɵɵtext(4, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.contentHeaderTpl || _r0);\n} }\nfunction NgbHighlight_ng_template_0_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.highlightClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_span_0_Template, 2, 3, \"span\", 1);\n ɵngcc0.ɵɵtemplate(1, NgbHighlight_ng_template_0_ng_template_1_Template, 1, 1, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n} if (rf & 2) {\n const isOdd_r2 = ctx.odd;\n const _r4 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", isOdd_r2)(\"ngIfElse\", _r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ngb-highlight\", 2);\n} if (rf & 2) {\n const result_r3 = ctx.result;\n const term_r4 = ctx.term;\n const formatter_r5 = ctx.formatter;\n ɵngcc0.ɵɵproperty(\"result\", formatter_r5(result_r3))(\"term\", term_r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_2_ng_template_1_Template(rf, ctx) { }\nconst _c87 = function (a0, a1, a2) { return { result: a0, term: a1, formatter: a2 }; };\nfunction NgbTypeaheadWindow_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbTypeaheadWindow_ng_template_2_Template_button_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const idx_r7 = restoredCtx.index; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.markActive(idx_r7); })(\"click\", function NgbTypeaheadWindow_ng_template_2_Template_button_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const result_r6 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.select(result_r6); });\n ɵngcc0.ɵɵtemplate(1, NgbTypeaheadWindow_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const result_r6 = ctx.$implicit;\n const idx_r7 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"active\", idx_r7 === ctx_r2.activeIdx);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r2.id + \"-\" + idx_r7);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.resultTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(5, _c87, result_r6, ctx_r2.term, ctx_r2.formatter));\n} }\nfunction toInteger(value) {\n return parseInt(`${value}`, 10);\n}\nfunction toString(value) {\n return (value !== undefined && value !== null) ? `${value}` : '';\n}\nfunction getValueInRange(value, max, min = 0) {\n return Math.max(Math.min(value, max), min);\n}\nfunction isString(value) {\n return typeof value === 'string';\n}\nfunction isNumber(value) {\n return !isNaN(toInteger(value));\n}\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction padNumber(value) {\n if (isNumber(value)) {\n return `0${value}`.slice(-2);\n }\n else {\n return '';\n }\n}\nfunction regExpEscape(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\nfunction hasClassName(element, className) {\n return element && element.className && element.className.split &&\n element.className.split(/\\s+/).indexOf(className) >= 0;\n}\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\n // Polyfill for ie10+\n if (!Element.prototype.matches) {\n // IE uses the non-standard name: msMatchesSelector\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n Element.prototype.closest = function (s) {\n let el = this;\n if (!document.documentElement.contains(el)) {\n return null;\n }\n do {\n if (el.matches(s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n}\nfunction closest(element, selector) {\n if (!selector) {\n return null;\n }\n /*\n * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\n * not support `Element.prototype.closest`. To emulate the correct behaviour\n * we return null when the method is missing.\n *\n * Note that in evergreen browsers `closest(document.documentElement, 'html')`\n * will return the document element whilst in Edge null will be returned. This\n * compromise was deemed good enough.\n */\n if (typeof element.closest === 'undefined') {\n return null;\n }\n return element.closest(selector);\n}\n/**\n * Force a browser reflow\n * @param element element where to apply the reflow\n */\nfunction reflow(element) {\n return (element || document.body).getBoundingClientRect();\n}\n/**\n * Creates an observable where all callbacks are executed inside a given zone\n *\n * @param zone\n */\nfunction runInZone(zone) {\n return (source) => {\n return new Observable(observer => {\n const onNext = (value) => zone.run(() => observer.next(value));\n const onError = (e) => zone.run(() => observer.error(e));\n const onComplete = () => zone.run(() => observer.complete());\n return source.subscribe(onNext, onError, onComplete);\n });\n };\n}\nfunction removeAccents(str) {\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n}\n\nconst environment = {\n animation: true,\n transitionTimerDelayMs: 5,\n};\n\n/**\n * Global ng-bootstrap config\n *\n * @since 8.0.0\n */\nclass NgbConfig {\n constructor() {\n this.animation = environment.animation;\n }\n}\nNgbConfig.ɵfac = function NgbConfig_Factory(t) { return new (t || NgbConfig)(); };\nNgbConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbConfig_Factory() { return new NgbConfig(); }, token: NgbConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all accordions used in the application.\n */\nclass NgbAccordionConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.closeOthers = false;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbAccordionConfig.ɵfac = function NgbAccordionConfig_Factory(t) { return new (t || NgbAccordionConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbAccordionConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbAccordionConfig, providedIn: \"root\" });\nNgbAccordionConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nfunction getTransitionDurationMs(element) {\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\n const transitionDelaySec = parseFloat(transitionDelay);\n const transitionDurationSec = parseFloat(transitionDuration);\n return (transitionDelaySec + transitionDurationSec) * 1000;\n}\n\nconst noopFn = () => { };\nconst ɵ0$5 = noopFn;\nconst { transitionTimerDelayMs } = environment;\nconst runningTransitions = new Map();\nconst ngbRunTransition = (zone, element, startFn, options) => {\n // Getting initial context from options\n let context = options.context || {};\n // Checking if there are already running transitions on the given element.\n const running = runningTransitions.get(element);\n if (running) {\n switch (options.runningTransition) {\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\n // We're not emitting any values, but simply completing the observable (EMPTY).\n case 'continue':\n return EMPTY;\n // If there is one running and we want for it to 'stop', we have to complete the running one.\n // We're simply completing the running one and not emitting any values and merging newly provided context\n // with the one coming from currently running transition.\n case 'stop':\n zone.run(() => running.transition$.complete());\n context = Object.assign(running.context, context);\n runningTransitions.delete(element);\n }\n }\n // Running the start function\n const endFn = startFn(element, options.animation, context) || noopFn;\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\n // If animations are disabled, we have to emit a value and complete the observable\n // In this case we have to call the end function, but can finish immediately by emitting a value,\n // completing the observable and executing end functions synchronously.\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\n zone.run(() => endFn());\n return of(undefined).pipe(runInZone(zone));\n }\n // Starting a new transition\n const transition$ = new Subject();\n const finishTransition$ = new Subject();\n const stop$ = transition$.pipe(endWith(true));\n runningTransitions.set(element, {\n transition$,\n complete: () => {\n finishTransition$.next();\n finishTransition$.complete();\n },\n context\n });\n const transitionDurationMs = getTransitionDurationMs(element);\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\n zone.runOutsideAngular(() => {\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(({ target }) => target === element));\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\n race(timer$, transitionEnd$, finishTransition$).pipe(takeUntil(stop$)).subscribe(() => {\n runningTransitions.delete(element);\n zone.run(() => {\n endFn();\n transition$.next();\n transition$.complete();\n });\n });\n });\n return transition$.asObservable();\n};\nconst ngbCompleteTransition = (element) => {\n var _a;\n (_a = runningTransitions.get(element)) === null || _a === void 0 ? void 0 : _a.complete();\n};\n\nfunction measureCollapsingElementHeightPx(element) {\n // SSR fix for without injecting the PlatformId\n if (typeof navigator === 'undefined') {\n return '0px';\n }\n const { classList } = element;\n const hasShownClass = classList.contains('show');\n if (!hasShownClass) {\n classList.add('show');\n }\n element.style.height = '';\n const height = element.getBoundingClientRect().height + 'px';\n if (!hasShownClass) {\n classList.remove('show');\n }\n return height;\n}\nconst ngbCollapsingTransition = (element, animation, context) => {\n let { direction, maxHeight } = context;\n const { classList } = element;\n function setInitialClasses() {\n classList.add('collapse');\n if (direction === 'show') {\n classList.add('show');\n }\n else {\n classList.remove('show');\n }\n }\n // without animations we just need to set initial classes\n if (!animation) {\n setInitialClasses();\n return;\n }\n // No maxHeight -> running the transition for the first time\n if (!maxHeight) {\n maxHeight = measureCollapsingElementHeightPx(element);\n context.maxHeight = maxHeight;\n // Fix the height before starting the animation\n element.style.height = direction !== 'show' ? maxHeight : '0px';\n classList.remove('collapse');\n classList.remove('collapsing');\n classList.remove('show');\n reflow(element);\n // Start the animation\n classList.add('collapsing');\n }\n // Start or revert the animation\n element.style.height = direction === 'show' ? maxHeight : '0px';\n return () => {\n setInitialClasses();\n classList.remove('collapsing');\n element.style.height = '';\n };\n};\n\nlet nextId$4 = 0;\n/**\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\n *\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\n *\n * @since 4.1.0\n */\nclass NgbPanelHeader {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelHeader.ɵfac = function NgbPanelHeader_Factory(t) { return new (t || NgbPanelHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelHeader, selectors: [[\"ng-template\", \"ngbPanelHeader\", \"\"]] });\nNgbPanelHeader.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelHeader, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelHeader]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive that wraps only the panel title with HTML markup inside.\n *\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\n */\nclass NgbPanelTitle {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelTitle.ɵfac = function NgbPanelTitle_Factory(t) { return new (t || NgbPanelTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelTitle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelTitle, selectors: [[\"ng-template\", \"ngbPanelTitle\", \"\"]] });\nNgbPanelTitle.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelTitle, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelTitle]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive that wraps the accordion panel content.\n */\nclass NgbPanelContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPanelContent.ɵfac = function NgbPanelContent_Factory(t) { return new (t || NgbPanelContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelContent, selectors: [[\"ng-template\", \"ngbPanelContent\", \"\"]] });\nNgbPanelContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive that wraps an individual accordion panel with title and collapsible content.\n */\nclass NgbPanel {\n constructor() {\n /**\n * If `true`, the panel is disabled an can't be toggled.\n */\n this.disabled = false;\n /**\n * An optional id for the panel that must be unique on the page.\n *\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\n */\n this.id = `ngb-panel-${nextId$4++}`;\n this.isOpen = false;\n /* A flag to specified that the transition panel classes have been initialized */\n this.initClassDone = false;\n /* A flag to specified if the panel is currently being animated, to ensure its presence in the dom */\n this.transitionRunning = false;\n /**\n * An event emitted when the panel is shown, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the panel is hidden, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.titleTpl = this.titleTpls.first;\n this.headerTpl = this.headerTpls.first;\n this.contentTpl = this.contentTpls.first;\n }\n}\nNgbPanel.ɵfac = function NgbPanel_Factory(t) { return new (t || NgbPanel)(); };\nNgbPanel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanel, selectors: [[\"ngb-panel\"]], contentQueries: function NgbPanel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelTitle, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelHeader, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, inputs: { disabled: \"disabled\", id: \"id\", title: \"title\", type: \"type\", cardClass: \"cardClass\" }, outputs: { shown: \"shown\", hidden: \"hidden\" } });\nNgbPanel.propDecorators = {\n disabled: [{ type: Input }],\n id: [{ type: Input }],\n title: [{ type: Input }],\n type: [{ type: Input }],\n cardClass: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }],\n titleTpls: [{ type: ContentChildren, args: [NgbPanelTitle, { descendants: false },] }],\n headerTpls: [{ type: ContentChildren, args: [NgbPanelHeader, { descendants: false },] }],\n contentTpls: [{ type: ContentChildren, args: [NgbPanelContent, { descendants: false },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanel, [{\n type: Directive,\n args: [{ selector: 'ngb-panel' }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], title: [{\n type: Input\n }], type: [{\n type: Input\n }], cardClass: [{\n type: Input\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbPanelTitle, { descendants: false }]\n }], headerTpls: [{\n type: ContentChildren,\n args: [NgbPanelHeader, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbPanelContent, { descendants: false }]\n }] }); })();\n/**\n * Accordion is a collection of collapsible panels (bootstrap cards).\n *\n * It can ensure only one panel is opened at a time and allows to customize panel\n * headers.\n */\nclass NgbAccordion {\n constructor(config, _element, _ngZone, _changeDetector) {\n this._element = _element;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n /**\n * An array or comma separated strings of panel ids that should be opened **initially**.\n *\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\n * the `(panelChange)` event.\n */\n this.activeIds = [];\n /**\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\n */\n this.destroyOnHide = true;\n /**\n * Event emitted right before the panel toggle happens.\n *\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\n */\n this.panelChange = new EventEmitter();\n /**\n * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\n * The payload is the panel id.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.animation = config.animation;\n this.type = config.type;\n this.closeOtherPanels = config.closeOthers;\n }\n /**\n * Checks if a panel with a given id is expanded.\n */\n isExpanded(panelId) { return this.activeIds.indexOf(panelId) > -1; }\n /**\n * Expands a panel with a given id.\n *\n * Has no effect if the panel is already expanded or disabled.\n */\n expand(panelId) { this._changeOpenState(this._findPanelById(panelId), true); }\n /**\n * Expands all panels, if `[closeOthers]` is `false`.\n *\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\n */\n expandAll() {\n if (this.closeOtherPanels) {\n if (this.activeIds.length === 0 && this.panels.length) {\n this._changeOpenState(this.panels.first, true);\n }\n }\n else {\n this.panels.forEach(panel => this._changeOpenState(panel, true));\n }\n }\n /**\n * Collapses a panel with the given id.\n *\n * Has no effect if the panel is already collapsed or disabled.\n */\n collapse(panelId) { this._changeOpenState(this._findPanelById(panelId), false); }\n /**\n * Collapses all opened panels.\n */\n collapseAll() {\n this.panels.forEach((panel) => { this._changeOpenState(panel, false); });\n }\n /**\n * Toggles a panel with the given id.\n *\n * Has no effect if the panel is disabled.\n */\n toggle(panelId) {\n const panel = this._findPanelById(panelId);\n if (panel) {\n this._changeOpenState(panel, !panel.isOpen);\n }\n }\n ngAfterContentChecked() {\n // active id updates\n if (isString(this.activeIds)) {\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\n }\n // update panels open states\n this.panels.forEach(panel => { panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1; });\n // closeOthers updates\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\n this._closeOthers(this.activeIds[0], false);\n this._updateActiveIds();\n }\n // Setup the initial classes here\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.panels.forEach(panel => {\n const panelElement = this._getPanelElement(panel.id);\n if (panelElement) {\n if (!panel.initClassDone) {\n panel.initClassDone = true;\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\n animation: false,\n runningTransition: 'continue',\n context: { direction: panel.isOpen ? 'show' : 'hide' }\n });\n }\n }\n else {\n // Classes must be initialized next time it will be in the dom\n panel.initClassDone = false;\n }\n });\n });\n }\n _changeOpenState(panel, nextState) {\n if (panel != null && !panel.disabled && panel.isOpen !== nextState) {\n let defaultPrevented = false;\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: () => { defaultPrevented = true; } });\n if (!defaultPrevented) {\n panel.isOpen = nextState;\n panel.transitionRunning = true;\n if (nextState && this.closeOtherPanels) {\n this._closeOthers(panel.id);\n }\n this._updateActiveIds();\n this._runTransitions(this.animation);\n }\n }\n }\n _closeOthers(panelId, enableTransition = true) {\n this.panels.forEach(panel => {\n if (panel.id !== panelId && panel.isOpen) {\n panel.isOpen = false;\n panel.transitionRunning = enableTransition;\n }\n });\n }\n _findPanelById(panelId) { return this.panels.find(p => p.id === panelId) || null; }\n _updateActiveIds() {\n this.activeIds = this.panels.filter(panel => panel.isOpen && !panel.disabled).map(panel => panel.id);\n }\n _runTransitions(animation) {\n // detectChanges is performed to ensure that all panels are in the dom (via transitionRunning = true)\n // before starting the animation\n this._changeDetector.detectChanges();\n this.panels.forEach(panel => {\n // When panel.transitionRunning is true, the transition needs to be started OR reversed,\n // The direction (show or hide) is choosen by each panel.isOpen state\n if (panel.transitionRunning) {\n const panelElement = this._getPanelElement(panel.id);\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\n animation,\n runningTransition: 'stop',\n context: { direction: panel.isOpen ? 'show' : 'hide' }\n }).subscribe(() => {\n panel.transitionRunning = false;\n const { id } = panel;\n if (panel.isOpen) {\n panel.shown.emit();\n this.shown.emit(id);\n }\n else {\n panel.hidden.emit();\n this.hidden.emit(id);\n }\n });\n }\n });\n }\n _getPanelElement(panelId) {\n return this._element.nativeElement.querySelector('#' + panelId);\n }\n}\nNgbAccordion.ɵfac = function NgbAccordion_Factory(t) { return new (t || NgbAccordion)(ɵngcc0.ɵɵdirectiveInject(NgbAccordionConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbAccordion.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAccordion, selectors: [[\"ngb-accordion\"]], contentQueries: function NgbAccordion_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanel, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panels = _t);\n } }, hostAttrs: [\"role\", \"tablist\", 1, \"accordion\"], hostVars: 1, hostBindings: function NgbAccordion_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", !ctx.closeOtherPanels);\n } }, inputs: { activeIds: \"activeIds\", destroyOnHide: \"destroyOnHide\", animation: \"animation\", type: \"type\", closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"] }, outputs: { panelChange: \"panelChange\", shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbAccordion\"], decls: 3, vars: 1, consts: [[\"ngbPanelHeader\", \"\"], [\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"btn\", \"btn-link\", 3, \"ngbPanelToggle\"], [3, \"ngTemplateOutlet\"], [\"role\", \"tab\", 3, \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"tabpanel\", 3, \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"id\"], [1, \"card-body\"]], template: function NgbAccordion_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbAccordion_ng_template_0_Template, 3, 3, \"ng-template\", 0, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_Template, 4, 11, \"ng-template\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.panels);\n } }, directives: function () { return [NgbPanelHeader, ɵngcc1.NgForOf, NgbPanelToggle, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgIf]; }, encapsulation: 2 });\nNgbAccordion.ctorParameters = () => [\n { type: NgbAccordionConfig },\n { type: ElementRef },\n { type: NgZone },\n { type: ChangeDetectorRef }\n];\nNgbAccordion.propDecorators = {\n panels: [{ type: ContentChildren, args: [NgbPanel,] }],\n animation: [{ type: Input }],\n activeIds: [{ type: Input }],\n closeOtherPanels: [{ type: Input, args: ['closeOthers',] }],\n destroyOnHide: [{ type: Input }],\n type: [{ type: Input }],\n panelChange: [{ type: Output }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordion, [{\n type: Component,\n args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: `\n \n \n \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n `\n }]\n }], function () { return [{ type: NgbAccordionConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { activeIds: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], type: [{\n type: Input\n }], closeOtherPanels: [{\n type: Input,\n args: ['closeOthers']\n }], panels: [{\n type: ContentChildren,\n args: [NgbPanel]\n }] }); })();\n/**\n * A directive to put on a button that toggles panel opening and closing.\n *\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\n *\n * @since 4.1.0\n */\nclass NgbPanelToggle {\n constructor(accordion, panel) {\n this.accordion = accordion;\n this.panel = panel;\n }\n set ngbPanelToggle(panel) {\n if (panel) {\n this.panel = panel;\n }\n }\n}\nNgbPanelToggle.ɵfac = function NgbPanelToggle_Factory(t) { return new (t || NgbPanelToggle)(ɵngcc0.ɵɵdirectiveInject(NgbAccordion), ɵngcc0.ɵɵdirectiveInject(NgbPanel, 9)); };\nNgbPanelToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelToggle, selectors: [[\"button\", \"ngbPanelToggle\", \"\"]], hostAttrs: [\"type\", \"button\"], hostVars: 5, hostBindings: function NgbPanelToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbPanelToggle_click_HostBindingHandler() { return ctx.accordion.toggle(ctx.panel.id); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.panel.disabled);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.panel.isOpen)(\"aria-controls\", ctx.panel.id);\n ɵngcc0.ɵɵclassProp(\"collapsed\", !ctx.panel.isOpen);\n } }, inputs: { ngbPanelToggle: \"ngbPanelToggle\" } });\nNgbPanelToggle.ctorParameters = () => [\n { type: NgbAccordion },\n { type: NgbPanel, decorators: [{ type: Optional }, { type: Host }] }\n];\nNgbPanelToggle.propDecorators = {\n ngbPanelToggle: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelToggle, [{\n type: Directive,\n args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n }]\n }], function () { return [{ type: NgbAccordion }, { type: NgbPanel, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { ngbPanelToggle: [{\n type: Input\n }] }); })();\n\nconst NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\nclass NgbAccordionModule {\n}\nNgbAccordionModule.ɵfac = function NgbAccordionModule_Factory(t) { return new (t || NgbAccordionModule)(); };\nNgbAccordionModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAccordionModule });\nNgbAccordionModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionModule, [{\n type: NgModule,\n args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAccordionModule, { declarations: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; } }); })();\n\n/**\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all alerts used in the application.\n */\nclass NgbAlertConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.dismissible = true;\n this.type = 'warning';\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbAlertConfig.ɵfac = function NgbAlertConfig_Factory(t) { return new (t || NgbAlertConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbAlertConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbAlertConfig, providedIn: \"root\" });\nNgbAlertConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst ngbAlertFadingTransition = ({ classList }) => {\n classList.remove('show');\n};\n\n/**\n * Alert is a component to provide contextual feedback messages for user.\n *\n * It supports several alert types and can be dismissed.\n */\nclass NgbAlert {\n constructor(config, _renderer, _element, _zone) {\n this._renderer = _renderer;\n this._element = _element;\n this._zone = _zone;\n /**\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\n *\n * @since 8.0.0\n */\n this.closed = new EventEmitter();\n this.dismissible = config.dismissible;\n this.type = config.type;\n this.animation = config.animation;\n }\n /**\n * Triggers alert closing programmatically (same as clicking on the close button (×)).\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(closed)` output\n *\n * @since 8.0.0\n */\n close() {\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbAlertFadingTransition, { animation: this.animation, runningTransition: 'continue' });\n transition.subscribe(() => this.closed.emit());\n return transition;\n }\n ngOnChanges(changes) {\n const typeChange = changes['type'];\n if (typeChange && !typeChange.firstChange) {\n this._renderer.removeClass(this._element.nativeElement, `alert-${typeChange.previousValue}`);\n this._renderer.addClass(this._element.nativeElement, `alert-${typeChange.currentValue}`);\n }\n }\n ngOnInit() { this._renderer.addClass(this._element.nativeElement, `alert-${this.type}`); }\n}\nNgbAlert.ɵfac = function NgbAlert_Factory(t) { return new (t || NgbAlert)(ɵngcc0.ɵɵdirectiveInject(NgbAlertConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbAlert.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAlert, selectors: [[\"ngb-alert\"]], hostAttrs: [\"role\", \"alert\", 1, \"alert\", \"show\"], hostVars: 4, hostBindings: function NgbAlert_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation)(\"alert-dismissible\", ctx.dismissible);\n } }, inputs: { dismissible: \"dismissible\", type: \"type\", animation: \"animation\" }, outputs: { closed: \"closed\" }, exportAs: [\"ngbAlert\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 2, vars: 1, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2 = goog.getMsg(\"Close\");\n i18n_1 = MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2;\n }\n else {\n i18n_1 = $localize `:@@ngb.alert.close␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"type\", \"button\", \"class\", \"close\", \"aria-label\", i18n_1, 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", i18n_1, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbAlert_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, NgbAlert_button_1_Template, 3, 0, \"button\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dismissible);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-alert{display:block}\"], encapsulation: 2, changeDetection: 0 });\nNgbAlert.ctorParameters = () => [\n { type: NgbAlertConfig },\n { type: Renderer2 },\n { type: ElementRef },\n { type: NgZone }\n];\nNgbAlert.propDecorators = {\n animation: [{ type: Input }],\n dismissible: [{ type: Input }],\n type: [{ type: Input }],\n closed: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlert, [{\n type: Component,\n args: [{\n selector: 'ngb-alert',\n exportAs: 'ngbAlert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'role': 'alert', 'class': 'alert show', '[class.fade]': 'animation', '[class.alert-dismissible]': 'dismissible' },\n template: `\n \n \n `,\n styles: [\"ngb-alert{display:block}\"]\n }]\n }], function () { return [{ type: NgbAlertConfig }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { closed: [{\n type: Output\n }], dismissible: [{\n type: Input\n }], type: [{\n type: Input\n }], animation: [{\n type: Input\n }] }); })();\n\nclass NgbAlertModule {\n}\nNgbAlertModule.ɵfac = function NgbAlertModule_Factory(t) { return new (t || NgbAlertModule)(); };\nNgbAlertModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAlertModule });\nNgbAlertModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertModule, [{\n type: NgModule,\n args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule], entryComponents: [NgbAlert] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAlertModule, { declarations: function () { return [NgbAlert]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAlert]; } }); })();\n\nclass NgbButtonLabel {\n}\nNgbButtonLabel.ɵfac = function NgbButtonLabel_Factory(t) { return new (t || NgbButtonLabel)(); };\nNgbButtonLabel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbButtonLabel, selectors: [[\"\", \"ngbButtonLabel\", \"\"]], hostVars: 8, hostBindings: function NgbButtonLabel_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"btn\", true)(\"active\", ctx.active)(\"disabled\", ctx.disabled)(\"focus\", ctx.focused);\n } } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonLabel, [{\n type: Directive,\n args: [{\n selector: '[ngbButtonLabel]',\n host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n }]\n }], null, null); })();\n\n/**\n * Allows to easily create Bootstrap-style checkbox buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nclass NgbCheckBox {\n constructor(_label, _cd) {\n this._label = _label;\n this._cd = _cd;\n /**\n * If `true`, the checkbox button will be disabled\n */\n this.disabled = false;\n /**\n * The form control value when the checkbox is checked.\n */\n this.valueChecked = true;\n /**\n * The form control value when the checkbox is unchecked.\n */\n this.valueUnChecked = false;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n }\n set focused(isFocused) {\n this._label.focused = isFocused;\n if (!isFocused) {\n this.onTouched();\n }\n }\n onInputChange($event) {\n const modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\n this.onChange(modelToPropagate);\n this.onTouched();\n this.writeValue(modelToPropagate);\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n this._label.disabled = isDisabled;\n }\n writeValue(value) {\n this.checked = value === this.valueChecked;\n this._label.active = this.checked;\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n this._cd.markForCheck();\n }\n}\nNgbCheckBox.ɵfac = function NgbCheckBox_Factory(t) { return new (t || NgbCheckBox)(ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbCheckBox.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCheckBox, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"checkbox\"]], hostVars: 2, hostBindings: function NgbCheckBox_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbCheckBox_change_HostBindingHandler($event) { return ctx.onInputChange($event); })(\"focus\", function NgbCheckBox_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbCheckBox_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", valueChecked: \"valueChecked\", valueUnChecked: \"valueUnChecked\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbCheckBox), multi: true }])] });\nNgbCheckBox.ctorParameters = () => [\n { type: NgbButtonLabel },\n { type: ChangeDetectorRef }\n];\nNgbCheckBox.propDecorators = {\n disabled: [{ type: Input }],\n valueChecked: [{ type: Input }],\n valueUnChecked: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCheckBox, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=checkbox]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '(change)': 'onInputChange($event)',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbCheckBox), multi: true }]\n }]\n }], function () { return [{ type: NgbButtonLabel }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabled: [{\n type: Input\n }], valueChecked: [{\n type: Input\n }], valueUnChecked: [{\n type: Input\n }] }); })();\n\nlet nextId$3 = 0;\n/**\n * Allows to easily create Bootstrap-style radio buttons.\n *\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\n * either in a reactive or template-driven way.\n */\nclass NgbRadioGroup {\n constructor() {\n this._radios = new Set();\n this._value = null;\n /**\n * Name of the radio group applied to radio input elements.\n *\n * Will be applied to all radio input elements inside the group,\n * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\n *\n * If not provided, will be generated in the `ngb-radio-xx` format.\n */\n this.name = `ngb-radio-${nextId$3++}`;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n }\n get disabled() { return this._disabled; }\n set disabled(isDisabled) { this.setDisabledState(isDisabled); }\n onRadioChange(radio) {\n this.writeValue(radio.value);\n this.onChange(radio.value);\n }\n onRadioValueUpdate() { this._updateRadiosValue(); }\n register(radio) { this._radios.add(radio); }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(isDisabled) {\n this._disabled = isDisabled;\n this._updateRadiosDisabled();\n }\n unregister(radio) { this._radios.delete(radio); }\n writeValue(value) {\n this._value = value;\n this._updateRadiosValue();\n }\n _updateRadiosValue() { this._radios.forEach((radio) => radio.updateValue(this._value)); }\n _updateRadiosDisabled() { this._radios.forEach((radio) => radio.updateDisabled()); }\n}\nNgbRadioGroup.ɵfac = function NgbRadioGroup_Factory(t) { return new (t || NgbRadioGroup)(); };\nNgbRadioGroup.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadioGroup, selectors: [[\"\", \"ngbRadioGroup\", \"\"]], hostAttrs: [\"role\", \"radiogroup\"], inputs: { name: \"name\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRadioGroup), multi: true }])] });\nNgbRadioGroup.propDecorators = {\n name: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadioGroup, [{\n type: Directive,\n args: [{\n selector: '[ngbRadioGroup]',\n host: { 'role': 'radiogroup' },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRadioGroup), multi: true }]\n }]\n }], function () { return []; }, { name: [{\n type: Input\n }] }); })();\n/**\n * A directive that marks an input of type \"radio\" as a part of the\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\n */\nclass NgbRadio {\n constructor(_group, _label, _renderer, _element, _cd) {\n this._group = _group;\n this._label = _label;\n this._renderer = _renderer;\n this._element = _element;\n this._cd = _cd;\n this._value = null;\n this._group.register(this);\n this.updateDisabled();\n }\n /**\n * The form control value when current radio button is checked.\n */\n set value(value) {\n this._value = value;\n const stringValue = value ? value.toString() : '';\n this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\n this._group.onRadioValueUpdate();\n }\n /**\n * If `true`, current radio button will be disabled.\n */\n set disabled(isDisabled) {\n this._disabled = isDisabled !== false;\n this.updateDisabled();\n }\n set focused(isFocused) {\n if (this._label) {\n this._label.focused = isFocused;\n }\n if (!isFocused) {\n this._group.onTouched();\n }\n }\n get checked() { return this._checked; }\n get disabled() { return this._group.disabled || this._disabled; }\n get value() { return this._value; }\n get nameAttr() { return this.name || this._group.name; }\n ngOnDestroy() { this._group.unregister(this); }\n onChange() { this._group.onRadioChange(this); }\n updateValue(value) {\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\n if (this.value !== value) {\n this._cd.markForCheck();\n }\n this._checked = this.value === value;\n this._label.active = this._checked;\n }\n updateDisabled() { this._label.disabled = this.disabled; }\n}\nNgbRadio.ɵfac = function NgbRadio_Factory(t) { return new (t || NgbRadio)(ɵngcc0.ɵɵdirectiveInject(NgbRadioGroup), ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRadio.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadio, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"radio\"]], hostVars: 3, hostBindings: function NgbRadio_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbRadio_change_HostBindingHandler() { return ctx.onChange(); })(\"focus\", function NgbRadio_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbRadio_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"name\", ctx.nameAttr);\n } }, inputs: { value: \"value\", disabled: \"disabled\", name: \"name\" } });\nNgbRadio.ctorParameters = () => [\n { type: NgbRadioGroup },\n { type: NgbButtonLabel },\n { type: Renderer2 },\n { type: ElementRef },\n { type: ChangeDetectorRef }\n];\nNgbRadio.propDecorators = {\n name: [{ type: Input }],\n value: [{ type: Input, args: ['value',] }],\n disabled: [{ type: Input, args: ['disabled',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadio, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=radio]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '[name]': 'nameAttr',\n '(change)': 'onChange()',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n }\n }]\n }], function () { return [{ type: NgbRadioGroup }, { type: NgbButtonLabel }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { value: [{\n type: Input,\n args: ['value']\n }], disabled: [{\n type: Input,\n args: ['disabled']\n }], name: [{\n type: Input\n }] }); })();\n\nconst NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\nclass NgbButtonsModule {\n}\nNgbButtonsModule.ɵfac = function NgbButtonsModule_Factory(t) { return new (t || NgbButtonsModule)(); };\nNgbButtonsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbButtonsModule });\nNgbButtonsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonsModule, [{\n type: NgModule,\n args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbButtonsModule, { declarations: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio], exports: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio] }); })();\n\n/**\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all carousels used in the application.\n */\nclass NgbCarouselConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.interval = 5000;\n this.wrap = true;\n this.keyboard = true;\n this.pauseOnHover = true;\n this.pauseOnFocus = true;\n this.showNavigationArrows = true;\n this.showNavigationIndicators = true;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbCarouselConfig.ɵfac = function NgbCarouselConfig_Factory(t) { return new (t || NgbCarouselConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbCarouselConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbCarouselConfig, providedIn: \"root\" });\nNgbCarouselConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\n/**\n * Defines the carousel slide transition direction.\n */\nvar NgbSlideEventDirection;\n(function (NgbSlideEventDirection) {\n NgbSlideEventDirection[\"LEFT\"] = \"left\";\n NgbSlideEventDirection[\"RIGHT\"] = \"right\";\n})(NgbSlideEventDirection || (NgbSlideEventDirection = {}));\nconst isBeingAnimated = ({ classList }) => {\n return classList.contains('carousel-item-left') || classList.contains('carousel-item-right');\n};\nconst ɵ0$4 = isBeingAnimated;\nconst removeDirectionClasses = (classList) => {\n classList.remove('carousel-item-left');\n classList.remove('carousel-item-right');\n};\nconst ɵ1$1 = removeDirectionClasses;\nconst removeClasses = (classList) => {\n removeDirectionClasses(classList);\n classList.remove('carousel-item-prev');\n classList.remove('carousel-item-next');\n};\nconst ɵ2$1 = removeClasses;\nconst ngbCarouselTransitionIn = (element, animation, { direction }) => {\n const { classList } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.add('active');\n return;\n }\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n }\n else {\n // For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\n classList.add('carousel-item-' + (direction === NgbSlideEventDirection.LEFT ? 'next' : 'prev'));\n reflow(element);\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.add('active');\n };\n};\nconst ngbCarouselTransitionOut = (element, animation, { direction }) => {\n const { classList } = element;\n if (!animation) {\n removeDirectionClasses(classList);\n removeClasses(classList);\n classList.remove('active');\n return;\n }\n // direction is left or right, depending on the way the slide goes out.\n if (isBeingAnimated(element)) {\n // Revert the transition\n removeDirectionClasses(classList);\n }\n else {\n classList.add('carousel-item-' + direction);\n }\n return () => {\n removeClasses(classList);\n classList.remove('active');\n };\n};\n\nlet nextId$2 = 0;\n/**\n * A directive that wraps the individual carousel slide.\n */\nclass NgbSlide {\n constructor(tplRef) {\n this.tplRef = tplRef;\n /**\n * Slide id that must be unique for the entire document.\n *\n * If not provided, will be generated in the `ngb-slide-xx` format.\n */\n this.id = `ngb-slide-${nextId$2++}`;\n /**\n * An event emitted when the slide transition is finished\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n }\n}\nNgbSlide.ɵfac = function NgbSlide_Factory(t) { return new (t || NgbSlide)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbSlide.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbSlide, selectors: [[\"ng-template\", \"ngbSlide\", \"\"]], inputs: { id: \"id\" }, outputs: { slid: \"slid\" } });\nNgbSlide.ctorParameters = () => [\n { type: TemplateRef }\n];\nNgbSlide.propDecorators = {\n id: [{ type: Input }],\n slid: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbSlide, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbSlide]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { id: [{\n type: Input\n }], slid: [{\n type: Output\n }] }); })();\n/**\n * Carousel is a component to easily create and control slideshows.\n *\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\n */\nclass NgbCarousel {\n constructor(config, _platformId, _ngZone, _cd, _container) {\n this._platformId = _platformId;\n this._ngZone = _ngZone;\n this._cd = _cd;\n this._container = _container;\n this.NgbSlideEventSource = NgbSlideEventSource;\n this._destroy$ = new Subject();\n this._interval$ = new BehaviorSubject(0);\n this._mouseHover$ = new BehaviorSubject(false);\n this._focused$ = new BehaviorSubject(false);\n this._pauseOnHover$ = new BehaviorSubject(false);\n this._pauseOnFocus$ = new BehaviorSubject(false);\n this._pause$ = new BehaviorSubject(false);\n this._wrap$ = new BehaviorSubject(false);\n /**\n * An event emitted just before the slide transition starts.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n */\n this.slide = new EventEmitter();\n /**\n * An event emitted right after the slide transition is completed.\n *\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\n *\n * @since 8.0.0\n */\n this.slid = new EventEmitter();\n /*\n * Keep the ids of the panels currently transitionning\n * in order to allow only the transition revertion\n */\n this._transitionIds = null;\n this.animation = config.animation;\n this.interval = config.interval;\n this.wrap = config.wrap;\n this.keyboard = config.keyboard;\n this.pauseOnHover = config.pauseOnHover;\n this.pauseOnFocus = config.pauseOnFocus;\n this.showNavigationArrows = config.showNavigationArrows;\n this.showNavigationIndicators = config.showNavigationIndicators;\n }\n /**\n * Time in milliseconds before the next slide is shown.\n */\n set interval(value) {\n this._interval$.next(value);\n }\n get interval() { return this._interval$.value; }\n /**\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\n */\n set wrap(value) {\n this._wrap$.next(value);\n }\n get wrap() { return this._wrap$.value; }\n /**\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\n *\n * @since 2.2.0\n */\n set pauseOnHover(value) {\n this._pauseOnHover$.next(value);\n }\n get pauseOnHover() { return this._pauseOnHover$.value; }\n /**\n * If `true`, will pause slide switching when the focus is inside the carousel.\n */\n set pauseOnFocus(value) {\n this._pauseOnFocus$.next(value);\n }\n get pauseOnFocus() { return this._pauseOnFocus$.value; }\n set mouseHover(value) { this._mouseHover$.next(value); }\n get mouseHover() { return this._mouseHover$.value; }\n set focused(value) { this._focused$.next(value); }\n get focused() { return this._focused$.value; }\n arrowLeft() {\n this.focus();\n this.prev(NgbSlideEventSource.ARROW_LEFT);\n }\n arrowRight() {\n this.focus();\n this.next(NgbSlideEventSource.ARROW_RIGHT);\n }\n ngAfterContentInit() {\n // setInterval() doesn't play well with SSR and protractor,\n // so we should run it in the browser and outside Angular\n if (isPlatformBrowser(this._platformId)) {\n this._ngZone.runOutsideAngular(() => {\n const hasNextSlide$ = combineLatest([\n this.slide.pipe(map(slideEvent => slideEvent.current), startWith(this.activeId)),\n this._wrap$, this.slides.changes.pipe(startWith(null))\n ])\n .pipe(map(([currentSlideId, wrap]) => {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\n }), distinctUntilChanged());\n combineLatest([\n this._pause$, this._pauseOnHover$, this._mouseHover$, this._pauseOnFocus$, this._focused$, this._interval$,\n hasNextSlide$\n ])\n .pipe(map(([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]) => ((pause || (pauseOnHover && mouseHover) || (pauseOnFocus && focused) || !hasNextSlide) ?\n 0 :\n interval)), distinctUntilChanged(), switchMap(interval => interval > 0 ? timer(interval, interval) : NEVER), takeUntil(this._destroy$))\n .subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\n });\n }\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => {\n var _a;\n (_a = this._transitionIds) === null || _a === void 0 ? void 0 : _a.forEach(id => ngbCompleteTransition(this._getSlideElement(id)));\n this._transitionIds = null;\n this._cd.markForCheck();\n // The following code need to be done asynchronously, after the dom becomes stable,\n // otherwise all changes will be undone.\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n for (const { id } of this.slides) {\n const element = this._getSlideElement(id);\n if (id === this.activeId) {\n element.classList.add('active');\n }\n else {\n element.classList.remove('active');\n }\n }\n });\n });\n }\n ngAfterContentChecked() {\n let activeSlide = this._getSlideById(this.activeId);\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : '');\n }\n ngAfterViewInit() {\n // Initialize the 'active' class (not managed by the template)\n if (this.activeId) {\n const element = this._getSlideElement(this.activeId);\n if (element) {\n element.classList.add('active');\n }\n }\n }\n ngOnDestroy() { this._destroy$.next(); }\n /**\n * Navigates to a slide with the specified identifier.\n */\n select(slideId, source) {\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\n }\n /**\n * Navigates to the previous slide.\n */\n prev(source) {\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT, source);\n }\n /**\n * Navigates to the next slide.\n */\n next(source) {\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT, source);\n }\n /**\n * Pauses cycling through the slides.\n */\n pause() { this._pause$.next(true); }\n /**\n * Restarts cycling through the slides from left to right.\n */\n cycle() { this._pause$.next(false); }\n /**\n * Set the focus on the carousel.\n */\n focus() { this._container.nativeElement.focus(); }\n _cycleToSelected(slideIdx, direction, source) {\n const transitionIds = this._transitionIds;\n if (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\n // Revert prevented\n return;\n }\n let selectedSlide = this._getSlideById(slideIdx);\n if (selectedSlide && selectedSlide.id !== this.activeId) {\n this._transitionIds = [this.activeId, slideIdx];\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\n const options = {\n animation: this.animation,\n runningTransition: 'stop',\n context: { direction },\n };\n const transitions = [];\n const activeSlide = this._getSlideById(this.activeId);\n if (activeSlide) {\n const activeSlideTransition = ngbRunTransition(this._ngZone, this._getSlideElement(activeSlide.id), ngbCarouselTransitionOut, options);\n activeSlideTransition.subscribe(() => { activeSlide.slid.emit({ isShown: false, direction, source }); });\n transitions.push(activeSlideTransition);\n }\n const previousId = this.activeId;\n this.activeId = selectedSlide.id;\n const nextSlide = this._getSlideById(this.activeId);\n const transition = ngbRunTransition(this._ngZone, this._getSlideElement(selectedSlide.id), ngbCarouselTransitionIn, options);\n transition.subscribe(() => { nextSlide === null || nextSlide === void 0 ? void 0 : nextSlide.slid.emit({ isShown: true, direction, source }); });\n transitions.push(transition);\n zip(...transitions).pipe(take(1)).subscribe(() => {\n this._transitionIds = null;\n this.slid.emit({ prev: previousId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\n });\n }\n // we get here after the interval fires or any external API call like next(), prev() or select()\n this._cd.markForCheck();\n }\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\n }\n _getSlideById(slideId) {\n return this.slides.find(slide => slide.id === slideId) || null;\n }\n _getSlideIdxById(slideId) {\n const slide = this._getSlideById(slideId);\n return slide != null ? this.slides.toArray().indexOf(slide) : -1;\n }\n _getNextSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\n slideArr[currentSlideIdx + 1].id;\n }\n _getPrevSlide(currentSlideId) {\n const slideArr = this.slides.toArray();\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\n const isFirstSlide = currentSlideIdx === 0;\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\n slideArr[currentSlideIdx - 1].id;\n }\n _getSlideElement(slideId) {\n return this._container.nativeElement.querySelector(`#slide-${slideId}`);\n }\n}\nNgbCarousel.ɵfac = function NgbCarousel_Factory(t) { return new (t || NgbCarousel)(ɵngcc0.ɵɵdirectiveInject(NgbCarouselConfig), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbCarousel.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbCarousel, selectors: [[\"ngb-carousel\"]], contentQueries: function NgbCarousel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbSlide, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.slides = _t);\n } }, hostAttrs: [\"tabIndex\", \"0\", 1, \"carousel\", \"slide\"], hostVars: 3, hostBindings: function NgbCarousel_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbCarousel_keydown_arrowLeft_HostBindingHandler() { return ctx.keyboard && ctx.arrowLeft(); })(\"keydown.arrowRight\", function NgbCarousel_keydown_arrowRight_HostBindingHandler() { return ctx.keyboard && ctx.arrowRight(); })(\"mouseenter\", function NgbCarousel_mouseenter_HostBindingHandler() { return ctx.mouseHover = true; })(\"mouseleave\", function NgbCarousel_mouseleave_HostBindingHandler() { return ctx.mouseHover = false; })(\"focusin\", function NgbCarousel_focusin_HostBindingHandler() { return ctx.focused = true; })(\"focusout\", function NgbCarousel_focusout_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-activedescendant\", \"slide-\" + ctx.activeId);\n ɵngcc0.ɵɵstyleProp(\"display\", \"block\");\n } }, inputs: { animation: \"animation\", interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", pauseOnFocus: \"pauseOnFocus\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\", activeId: \"activeId\" }, outputs: { slide: \"slide\", slid: \"slid\" }, exportAs: [\"ngbCarousel\"], decls: 6, vars: 6, consts: function () { let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc Currently selected slide number read by screen reader\n */\n const MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5 = goog.getMsg(\" Slide {$interpolation} of {$interpolation_1} \", { \"interpolation\": \"\\uFFFD0\\uFFFD\", \"interpolation_1\": \"\\uFFFD1\\uFFFD\" });\n i18n_4 = MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5;\n }\n else {\n i18n_4 = $localize `:Currently selected slide number read by screen reader@@ngb.carousel.slide-number␟a65b1b49aa7dd8c4f3004da6a8c2241814dae621␟783273603869937627: Slide ${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION: of ${\"\\uFFFD1\\uFFFD\"}:INTERPOLATION_1: `;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7 = goog.getMsg(\"Previous\");\n i18n_6 = MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7;\n }\n else {\n i18n_6 = $localize `:@@ngb.carousel.previous␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9 = goog.getMsg(\"Next\");\n i18n_8 = MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9;\n }\n else {\n i18n_8 = $localize `:@@ngb.carousel.next␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } return [[\"role\", \"tablist\", 1, \"carousel-indicators\"], [\"role\", \"tab\", 3, \"active\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"carousel-inner\"], [\"class\", \"carousel-item\", \"role\", \"tabpanel\", 3, \"id\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"carousel-control-prev\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"carousel-control-next\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"role\", \"tab\", 3, \"click\"], [\"role\", \"tabpanel\", 1, \"carousel-item\", 3, \"id\"], [1, \"sr-only\"], i18n_4, [3, \"ngTemplateOutlet\"], [\"role\", \"button\", 1, \"carousel-control-prev\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-prev-icon\"], i18n_6, [\"role\", \"button\", 1, \"carousel-control-next\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-next-icon\"], i18n_8]; }, template: function NgbCarousel_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ol\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbCarousel_li_1_Template, 1, 5, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_Template, 4, 4, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, NgbCarousel_a_4_Template, 4, 0, \"a\", 4);\n ɵngcc0.ɵɵtemplate(5, NgbCarousel_a_5_Template, 4, 0, \"a\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"sr-only\", !ctx.showNavigationIndicators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\nNgbCarousel.ctorParameters = () => [\n { type: NgbCarouselConfig },\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: ElementRef }\n];\nNgbCarousel.propDecorators = {\n slides: [{ type: ContentChildren, args: [NgbSlide,] }],\n animation: [{ type: Input }],\n activeId: [{ type: Input }],\n interval: [{ type: Input }],\n wrap: [{ type: Input }],\n keyboard: [{ type: Input }],\n pauseOnHover: [{ type: Input }],\n pauseOnFocus: [{ type: Input }],\n showNavigationArrows: [{ type: Input }],\n showNavigationIndicators: [{ type: Input }],\n slide: [{ type: Output }],\n slid: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarousel, [{\n type: Component,\n args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(keydown.arrowLeft)': 'keyboard && arrowLeft()',\n '(keydown.arrowRight)': 'keyboard && arrowRight()',\n '(mouseenter)': 'mouseHover = true',\n '(mouseleave)': 'mouseHover = false',\n '(focusin)': 'focused = true',\n '(focusout)': 'focused = false',\n '[attr.aria-activedescendant]': `'slide-' + activeId`\n },\n template: `\n
      \n
    1. \n
    \n
    \n
    \n \n Slide {{i + 1}} of {{c}}\n \n \n
    \n
    \n \n \n Previous\n \n \n \n Next\n \n `\n }]\n }], function () { return [{ type: NgbCarouselConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { slide: [{\n type: Output\n }], slid: [{\n type: Output\n }], animation: [{\n type: Input\n }], interval: [{\n type: Input\n }], wrap: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], pauseOnHover: [{\n type: Input\n }], pauseOnFocus: [{\n type: Input\n }], showNavigationArrows: [{\n type: Input\n }], showNavigationIndicators: [{\n type: Input\n }], activeId: [{\n type: Input\n }], slides: [{\n type: ContentChildren,\n args: [NgbSlide]\n }] }); })();\nvar NgbSlideEventSource;\n(function (NgbSlideEventSource) {\n NgbSlideEventSource[\"TIMER\"] = \"timer\";\n NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\n NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\n NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\n})(NgbSlideEventSource || (NgbSlideEventSource = {}));\nconst NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\nclass NgbCarouselModule {\n}\nNgbCarouselModule.ɵfac = function NgbCarouselModule_Factory(t) { return new (t || NgbCarouselModule)(); };\nNgbCarouselModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCarouselModule });\nNgbCarouselModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselModule, [{\n type: NgModule,\n args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCarouselModule, { declarations: function () { return [NgbCarousel, NgbSlide]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbCarousel, NgbSlide]; } }); })();\n\n/**\n * A configuration service for the [NgbCollapse](#/components/collapse/api#NgbCollapse) component.\n *\n * You can inject this service, typically in your root component, and customize its properties\n * to provide default values for all collapses used in the application.\n */\nclass NgbCollapseConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbCollapseConfig.ɵfac = function NgbCollapseConfig_Factory(t) { return new (t || NgbCollapseConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbCollapseConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbCollapseConfig_Factory() { return new NgbCollapseConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbCollapseConfig, providedIn: \"root\" });\nNgbCollapseConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\n/**\n * A directive to provide a simple way of hiding and showing elements on the page.\n */\nclass NgbCollapse {\n constructor(_element, config, _zone) {\n this._element = _element;\n this._zone = _zone;\n /**\n * If `true`, will collapse the element or show it otherwise.\n */\n this.collapsed = false;\n this.ngbCollapseChange = new EventEmitter();\n /**\n * An event emitted when the collapse element is shown, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the collapse element is hidden, after the transition. It has no payload.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.animation = config.animation;\n }\n ngOnInit() { this._runTransition(this.collapsed, false); }\n ngOnChanges({ collapsed }) {\n if (!collapsed.firstChange) {\n this._runTransitionWithEvents(this.collapsed, this.animation);\n }\n }\n /**\n * Triggers collapsing programmatically.\n *\n * If there is a collapsing transition running already, it will be reversed.\n * If the animations are turned off this happens synchronously.\n *\n * @since 8.0.0\n */\n toggle(open = this.collapsed) {\n this.collapsed = !open;\n this.ngbCollapseChange.next(this.collapsed);\n this._runTransitionWithEvents(this.collapsed, this.animation);\n }\n _runTransition(collapsed, animation) {\n return ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, { animation, runningTransition: 'stop', context: { direction: collapsed ? 'hide' : 'show' } });\n }\n _runTransitionWithEvents(collapsed, animation) {\n this._runTransition(collapsed, animation).subscribe(() => {\n if (collapsed) {\n this.hidden.emit();\n }\n else {\n this.shown.emit();\n }\n });\n }\n}\nNgbCollapse.ɵfac = function NgbCollapse_Factory(t) { return new (t || NgbCollapse)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbCollapseConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbCollapse.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCollapse, selectors: [[\"\", \"ngbCollapse\", \"\"]], inputs: { collapsed: [\"ngbCollapse\", \"collapsed\"], animation: \"animation\" }, outputs: { ngbCollapseChange: \"ngbCollapseChange\", shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbCollapse\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbCollapse.ctorParameters = () => [\n { type: ElementRef },\n { type: NgbCollapseConfig },\n { type: NgZone }\n];\nNgbCollapse.propDecorators = {\n animation: [{ type: Input }],\n collapsed: [{ type: Input, args: ['ngbCollapse',] }],\n ngbCollapseChange: [{ type: Output }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapse, [{\n type: Directive,\n args: [{ selector: '[ngbCollapse]', exportAs: 'ngbCollapse' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: NgbCollapseConfig }, { type: ɵngcc0.NgZone }]; }, { collapsed: [{\n type: Input,\n args: ['ngbCollapse']\n }], ngbCollapseChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }] }); })();\n\nclass NgbCollapseModule {\n}\nNgbCollapseModule.ɵfac = function NgbCollapseModule_Factory(t) { return new (t || NgbCollapseModule)(); };\nNgbCollapseModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCollapseModule });\nNgbCollapseModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseModule, [{\n type: NgModule,\n args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCollapseModule, { declarations: [NgbCollapse], exports: [NgbCollapse] }); })();\n\n/**\n * A simple class that represents a date that datepicker also uses internally.\n *\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\n * like `.equals()`, `.before()`, etc.\n *\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\n *\n * In many cases it is simpler to manipulate these objects together with\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n *\n * @since 3.0.0\n */\nclass NgbDate {\n constructor(year, month, day) {\n this.year = isInteger(year) ? year : null;\n this.month = isInteger(month) ? month : null;\n this.day = isInteger(day) ? day : null;\n }\n /**\n * A **static method** that creates a new date object from the `NgbDateStruct`,\n *\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\n *\n * If the `date` is already of `NgbDate` type, the method will return the same object.\n */\n static from(date) {\n if (date instanceof NgbDate) {\n return date;\n }\n return date ? new NgbDate(date.year, date.month, date.day) : null;\n }\n /**\n * Checks if the current date is equal to another date.\n */\n equals(other) {\n return other != null && this.year === other.year && this.month === other.month && this.day === other.day;\n }\n /**\n * Checks if the current date is before another date.\n */\n before(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day < other.day;\n }\n else {\n return this.month < other.month;\n }\n }\n else {\n return this.year < other.year;\n }\n }\n /**\n * Checks if the current date is after another date.\n */\n after(other) {\n if (!other) {\n return false;\n }\n if (this.year === other.year) {\n if (this.month === other.month) {\n return this.day === other.day ? false : this.day > other.day;\n }\n else {\n return this.month > other.month;\n }\n }\n else {\n return this.year > other.year;\n }\n }\n}\n\nfunction fromJSDate(jsDate) {\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\n}\nfunction toJSDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // this is done avoid 30 -> 1930 conversion\n if (!isNaN(jsDate.getTime())) {\n jsDate.setFullYear(date.year);\n }\n return jsDate;\n}\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\n return new NgbCalendarGregorian();\n}\n/**\n * A service that represents the calendar used by the datepicker.\n *\n * The default implementation uses the Gregorian calendar. You can inject it in your own\n * implementations if necessary to simplify `NgbDate` calculations.\n */\nclass NgbCalendar {\n}\nNgbCalendar.ɵfac = function NgbCalendar_Factory(t) { return new (t || NgbCalendar)(); };\nNgbCalendar.ɵprov = i0.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendar, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY }]\n }], null, null); })();\nclass NgbCalendarGregorian extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toJSDate(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromJSDate(jsDate);\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n let jsDate = toJSDate(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toJSDate(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return fromJSDate(new Date()); }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toJSDate(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\n jsDate.getDate() === date.day;\n }\n}\nNgbCalendarGregorian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarGregorian_BaseFactory; return function NgbCalendarGregorian_Factory(t) { return (ɵNgbCalendarGregorian_BaseFactory || (ɵNgbCalendarGregorian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarGregorian)))(t || NgbCalendarGregorian); }; }();\nNgbCalendarGregorian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarGregorian, factory: NgbCalendarGregorian.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarGregorian, [{\n type: Injectable\n }], null, null); })();\n\nfunction isChangedDate(prev, next) {\n return !dateComparator(prev, next);\n}\nfunction isChangedMonth(prev, next) {\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\n}\nfunction dateComparator(prev, next) {\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\n}\nfunction checkMinBeforeMax(minDate, maxDate) {\n if (maxDate && minDate && maxDate.before(minDate)) {\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\n }\n}\nfunction checkDateInRange(date, minDate, maxDate) {\n if (date && minDate && date.before(minDate)) {\n return minDate;\n }\n if (date && maxDate && date.after(maxDate)) {\n return maxDate;\n }\n return date || null;\n}\nfunction isDateSelectable(date, state) {\n const { minDate, maxDate, disabled, markDisabled } = state;\n // clang-format off\n return !(date === null ||\n date === undefined ||\n disabled ||\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\n (minDate && date.before(minDate)) ||\n (maxDate && date.after(maxDate)));\n // clang-format on\n}\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n let months = calendar.getMonths(date.year);\n if (minDate && date.year === minDate.year) {\n const index = months.findIndex(month => month === minDate.month);\n months = months.slice(index);\n }\n if (maxDate && date.year === maxDate.year) {\n const index = months.findIndex(month => month === maxDate.month);\n months = months.slice(0, index + 1);\n }\n return months;\n}\nfunction generateSelectBoxYears(date, minDate, maxDate) {\n if (!date) {\n return [];\n }\n const start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\n const end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\n const length = end - start + 1;\n const numbers = Array(length);\n for (let i = 0; i < length; i++) {\n numbers[i] = start + i;\n }\n return numbers;\n}\nfunction nextMonthDisabled(calendar, date, maxDate) {\n const nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\n return maxDate != null && nextDate.after(maxDate);\n}\nfunction prevMonthDisabled(calendar, date, minDate) {\n const prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\n return minDate != null && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\n prevDate.year < minDate.year && minDate.month === 1);\n}\nfunction buildMonths(calendar, date, state, i18n, force) {\n const { displayMonths, months } = state;\n // move old months to a temporary array\n const monthsToReuse = months.splice(0, months.length);\n // generate new first dates, nullify or reuse months\n const firstDates = Array.from({ length: displayMonths }, (_, i) => {\n const firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\n months[i] = null;\n if (!force) {\n const reusedIndex = monthsToReuse.findIndex(month => month.firstDate.equals(firstDate));\n // move reused month back to months\n if (reusedIndex !== -1) {\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\n }\n }\n return firstDate;\n });\n // rebuild nullified months\n firstDates.forEach((firstDate, i) => {\n if (months[i] === null) {\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\n }\n });\n return months;\n}\nfunction buildMonth(calendar, date, state, i18n, month = {}) {\n const { dayTemplateData, minDate, maxDate, firstDayOfWeek, markDisabled, outsideDays, weekdayWidth, weekdaysVisible } = state;\n const calendarToday = calendar.getToday();\n month.firstDate = null;\n month.lastDate = null;\n month.number = date.month;\n month.year = date.year;\n month.weeks = month.weeks || [];\n month.weekdays = month.weekdays || [];\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\n // clearing weekdays, if not visible\n if (!weekdaysVisible) {\n month.weekdays.length = 0;\n }\n // month has weeks\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\n let weekObject = month.weeks[week];\n if (!weekObject) {\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\n }\n const days = weekObject.days;\n // week has days\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\n if (week === 0 && weekdaysVisible) {\n month.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\n }\n const newDate = new NgbDate(date.year, date.month, date.day);\n const nextDate = calendar.getNext(newDate);\n const ariaLabel = i18n.getDayAriaLabel(newDate);\n // marking date as disabled\n let disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\n if (!disabled && markDisabled) {\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\n }\n // today\n let today = newDate.equals(calendarToday);\n // adding user-provided data to the context\n let contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\n // saving first date of the month\n if (month.firstDate === null && newDate.month === month.number) {\n month.firstDate = newDate;\n }\n // saving last date of the month\n if (newDate.month === month.number && nextDate.month !== month.number) {\n month.lastDate = newDate;\n }\n let dayObject = days[day];\n if (!dayObject) {\n dayObject = days[day] = {};\n }\n dayObject.date = newDate;\n dayObject.context = Object.assign(dayObject.context || {}, {\n $implicit: newDate,\n date: newDate,\n data: contextUserData,\n currentMonth: month.number,\n currentYear: month.year, disabled,\n focused: false,\n selected: false, today\n });\n dayObject.tabindex = -1;\n dayObject.ariaLabel = ariaLabel;\n dayObject.hidden = false;\n date = nextDate;\n }\n weekObject.number = calendar.getWeekNumber(days.map(day => day.date), firstDayOfWeek);\n // marking week as collapsed\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\n days[days.length - 1].date.month !== month.number;\n }\n return month;\n}\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\n const daysPerWeek = calendar.getDaysPerWeek();\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\n}\n\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\n return new NgbDatepickerI18nDefault(locale);\n}\n/**\n * A service supplying i18n data to the datepicker component.\n *\n * The default implementation of this service uses the Angular locale and registered locale data for\n * weekdays and month names (as explained in the Angular i18n guide).\n *\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\n * numerals. For other static labels the datepicker uses the default Angular i18n.\n *\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\n * a custom provider for i18n.\n */\nclass NgbDatepickerI18n {\n /**\n * Returns the text label to display above the day view.\n *\n * @since 9.1.0\n */\n getMonthLabel(date) {\n return `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\n }\n /**\n * Returns the textual representation of a day that is rendered in a day cell.\n *\n * @since 3.0.0\n */\n getDayNumerals(date) { return `${date.day}`; }\n /**\n * Returns the textual representation of a week number rendered by datepicker.\n *\n * @since 3.0.0\n */\n getWeekNumerals(weekNumber) { return `${weekNumber}`; }\n /**\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\n *\n * @since 3.0.0\n */\n getYearNumerals(year) { return `${year}`; }\n /**\n * Returns the week label to display in the heading of the month view.\n *\n * @since 9.1.0\n */\n getWeekLabel() { return ''; }\n}\nNgbDatepickerI18n.ɵfac = function NgbDatepickerI18n_Factory(t) { return new (t || NgbDatepickerI18n)(); };\nNgbDatepickerI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(i0.ɵɵinject(i0.LOCALE_ID)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\n/**\n * A service providing default implementation for the datepicker i18n.\n * It can be used as a base implementation if necessary.\n *\n * @since 9.1.0\n */\nclass NgbDatepickerI18nDefault extends NgbDatepickerI18n {\n constructor(_locale) {\n super();\n this._locale = _locale;\n this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\n this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\n }\n getWeekdayLabel(weekday, width) {\n const weekdaysStartingOnSunday = getLocaleDayNames(this._locale, FormStyle.Standalone, width === undefined ? TranslationWidth.Short : width);\n const weekdays = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\n return weekdays[weekday - 1] || '';\n }\n getMonthShortName(month) { return this._monthsShort[month - 1] || ''; }\n getMonthFullName(month) { return this._monthsFull[month - 1] || ''; }\n getDayAriaLabel(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day);\n return formatDate(jsDate, 'fullDate', this._locale);\n }\n}\nNgbDatepickerI18nDefault.ɵfac = function NgbDatepickerI18nDefault_Factory(t) { return new (t || NgbDatepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbDatepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nDefault, factory: NgbDatepickerI18nDefault.ɵfac });\nNgbDatepickerI18nDefault.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\nclass NgbDatepickerService {\n constructor(_calendar, _i18n) {\n this._calendar = _calendar;\n this._i18n = _i18n;\n this._VALIDATORS = {\n dayTemplateData: (dayTemplateData) => {\n if (this._state.dayTemplateData !== dayTemplateData) {\n return { dayTemplateData };\n }\n },\n displayMonths: (displayMonths) => {\n displayMonths = toInteger(displayMonths);\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\n return { displayMonths };\n }\n },\n disabled: (disabled) => {\n if (this._state.disabled !== disabled) {\n return { disabled };\n }\n },\n firstDayOfWeek: (firstDayOfWeek) => {\n firstDayOfWeek = toInteger(firstDayOfWeek);\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\n return { firstDayOfWeek };\n }\n },\n focusVisible: (focusVisible) => {\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\n return { focusVisible };\n }\n },\n markDisabled: (markDisabled) => {\n if (this._state.markDisabled !== markDisabled) {\n return { markDisabled };\n }\n },\n maxDate: (date) => {\n const maxDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.maxDate, maxDate)) {\n return { maxDate };\n }\n },\n minDate: (date) => {\n const minDate = this.toValidDate(date, null);\n if (isChangedDate(this._state.minDate, minDate)) {\n return { minDate };\n }\n },\n navigation: (navigation) => {\n if (this._state.navigation !== navigation) {\n return { navigation };\n }\n },\n outsideDays: (outsideDays) => {\n if (this._state.outsideDays !== outsideDays) {\n return { outsideDays };\n }\n },\n weekdays: (weekdays) => {\n const weekdayWidth = weekdays === true || weekdays === false ? TranslationWidth.Short : weekdays;\n const weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\n if (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\n return { weekdayWidth, weekdaysVisible };\n }\n }\n };\n this._model$ = new Subject();\n this._dateSelect$ = new Subject();\n this._state = {\n dayTemplateData: null,\n markDisabled: null,\n maxDate: null,\n minDate: null,\n disabled: false,\n displayMonths: 1,\n firstDate: null,\n firstDayOfWeek: 1,\n lastDate: null,\n focusDate: null,\n focusVisible: false,\n months: [],\n navigation: 'select',\n outsideDays: 'visible',\n prevDisabled: false,\n nextDisabled: false,\n selectedDate: null,\n selectBoxes: { years: [], months: [] },\n weekdayWidth: TranslationWidth.Short,\n weekdaysVisible: true\n };\n }\n get model$() { return this._model$.pipe(filter(model => model.months.length > 0)); }\n get dateSelect$() { return this._dateSelect$.pipe(filter(date => date !== null)); }\n set(options) {\n let patch = Object.keys(options)\n .map(key => this._VALIDATORS[key](options[key]))\n .reduce((obj, part) => (Object.assign(Object.assign({}, obj), part)), {});\n if (Object.keys(patch).length > 0) {\n this._nextState(patch);\n }\n }\n focus(date) {\n const focusedDate = this.toValidDate(date, null);\n if (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\n this._nextState({ focusDate: date });\n }\n }\n focusSelect() {\n if (isDateSelectable(this._state.focusDate, this._state)) {\n this.select(this._state.focusDate, { emitEvent: true });\n }\n }\n open(date) {\n const firstDate = this.toValidDate(date, this._calendar.getToday());\n if (firstDate != null && !this._state.disabled &&\n (!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))) {\n this._nextState({ firstDate });\n }\n }\n select(date, options = {}) {\n const selectedDate = this.toValidDate(date, null);\n if (selectedDate != null && !this._state.disabled) {\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\n this._nextState({ selectedDate });\n }\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\n this._dateSelect$.next(selectedDate);\n }\n }\n }\n toValidDate(date, defaultValue) {\n const ngbDate = NgbDate.from(date);\n if (defaultValue === undefined) {\n defaultValue = this._calendar.getToday();\n }\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\n }\n getMonth(struct) {\n for (let month of this._state.months) {\n if (struct.month === month.number && struct.year === month.year) {\n return month;\n }\n }\n throw new Error(`month ${struct.month} of year ${struct.year} not found`);\n }\n _nextState(patch) {\n const newState = this._updateState(patch);\n this._patchContexts(newState);\n this._state = newState;\n this._model$.next(this._state);\n }\n _patchContexts(state) {\n const { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\n state.months.forEach(month => {\n month.weeks.forEach(week => {\n week.days.forEach(day => {\n // patch focus flag\n if (focusDate) {\n day.context.focused = focusDate.equals(day.date) && focusVisible;\n }\n // calculating tabindex\n day.tabindex =\n !disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\n // override context disabled\n if (disabled === true) {\n day.context.disabled = true;\n }\n // patch selection flag\n if (selectedDate !== undefined) {\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\n }\n // visibility\n if (month.number !== day.date.month) {\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\n day.date.before(months[displayMonths - 1].lastDate));\n }\n });\n });\n });\n }\n _updateState(patch) {\n // patching fields\n const state = Object.assign({}, this._state, patch);\n let startDate = state.firstDate;\n // min/max dates changed\n if ('minDate' in patch || 'maxDate' in patch) {\n checkMinBeforeMax(state.minDate, state.maxDate);\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n }\n // disabled\n if ('disabled' in patch) {\n state.focusVisible = false;\n }\n // initial rebuild via 'select()'\n if ('selectedDate' in patch && this._state.months.length === 0) {\n startDate = state.selectedDate;\n }\n // terminate early if only focus visibility was changed\n if ('focusVisible' in patch) {\n return state;\n }\n // focus date changed\n if ('focusDate' in patch) {\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\n startDate = state.focusDate;\n // nothing to rebuild if only focus changed and it is still visible\n if (state.months.length !== 0 && state.focusDate && !state.focusDate.before(state.firstDate) &&\n !state.focusDate.after(state.lastDate)) {\n return state;\n }\n }\n // first date changed\n if ('firstDate' in patch) {\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\n startDate = state.firstDate;\n }\n // rebuilding months\n if (startDate) {\n const forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch ||\n 'weekdaysVisible' in patch;\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\n // updating months and boundary dates\n state.months = months;\n state.firstDate = months[0].firstDate;\n state.lastDate = months[months.length - 1].lastDate;\n // reset selected date if 'markDisabled' returns true\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\n state.selectedDate = null;\n }\n // adjusting focus after months were built\n if ('firstDate' in patch) {\n if (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\n state.focusDate = startDate;\n }\n }\n // adjusting months/years for the select box navigation\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\n if (state.navigation === 'select') {\n // years -> boundaries (min/max were changed)\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\n }\n // months -> when current year or boundaries change\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\n state.selectBoxes.months =\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\n }\n }\n else {\n state.selectBoxes = { years: [], months: [] };\n }\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\n }\n }\n return state;\n }\n}\nNgbDatepickerService.ɵfac = function NgbDatepickerService_Factory(t) { return new (t || NgbDatepickerService)(ɵngcc0.ɵɵinject(NgbCalendar), ɵngcc0.ɵɵinject(NgbDatepickerI18n)); };\nNgbDatepickerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerService, factory: NgbDatepickerService.ɵfac });\nNgbDatepickerService.ctorParameters = () => [\n { type: NgbCalendar },\n { type: NgbDatepickerI18n }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerService, [{\n type: Injectable\n }], function () { return [{ type: NgbCalendar }, { type: NgbDatepickerI18n }]; }, null); })();\n\n// clang-format on\nvar NavigationEvent;\n(function (NavigationEvent) {\n NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\n NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\n})(NavigationEvent || (NavigationEvent = {}));\n\n/**\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepickers used in the application.\n */\nclass NgbDatepickerConfig {\n constructor() {\n this.displayMonths = 1;\n this.firstDayOfWeek = 1;\n this.navigation = 'select';\n this.outsideDays = 'visible';\n this.showWeekNumbers = false;\n this.weekdays = TranslationWidth.Short;\n }\n}\nNgbDatepickerConfig.ɵfac = function NgbDatepickerConfig_Factory(t) { return new (t || NgbDatepickerConfig)(); };\nNgbDatepickerConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\n return new NgbDateStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\n * any provided user date model `D`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding datepicker to a form control,\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\n *\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\n */\nclass NgbDateAdapter {\n}\nNgbDateAdapter.ɵfac = function NgbDateAdapter_Factory(t) { return new (t || NgbDateAdapter)(); };\nNgbDateAdapter.ɵprov = i0.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY }]\n }], null, null); })();\nclass NgbDateStructAdapter extends NgbDateAdapter {\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n fromModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n /**\n * Converts a NgbDateStruct value into NgbDateStruct value\n */\n toModel(date) {\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\n { year: date.year, month: date.month, day: date.day } :\n null;\n }\n}\nNgbDateStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateStructAdapter_BaseFactory; return function NgbDateStructAdapter_Factory(t) { return (ɵNgbDateStructAdapter_BaseFactory || (ɵNgbDateStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateStructAdapter)))(t || NgbDateStructAdapter); }; }();\nNgbDateStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateStructAdapter, factory: NgbDateStructAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * A directive that marks the content template that customizes the way datepicker months are displayed\n *\n * @since 5.3.0\n */\nclass NgbDatepickerContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbDatepickerContent.ɵfac = function NgbDatepickerContent_Factory(t) { return new (t || NgbDatepickerContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbDatepickerContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDatepickerContent, selectors: [[\"ng-template\", \"ngbDatepickerContent\", \"\"]] });\nNgbDatepickerContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbDatepickerContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A highly configurable component that helps you with selecting calendar dates.\n *\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\n */\nclass NgbDatepicker {\n constructor(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\n this._service = _service;\n this._calendar = _calendar;\n this.i18n = i18n;\n this._elementRef = _elementRef;\n this._ngbDateAdapter = _ngbDateAdapter;\n this._ngZone = _ngZone;\n this._controlValue = null;\n this._destroyed$ = new Subject();\n this._publicState = {};\n /**\n * An event emitted right before the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 5.2.0\n */\n this.dateSelect = new EventEmitter();\n this.onChange = (_) => { };\n this.onTouched = () => { };\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showWeekNumbers', 'startDate', 'weekdays']\n .forEach(input => this[input] = config[input]);\n _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe(date => { this.dateSelect.emit(date); });\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(model => {\n const newDate = model.firstDate;\n const oldDate = this.model ? this.model.firstDate : null;\n // update public state\n this._publicState = {\n maxDate: model.maxDate,\n minDate: model.minDate,\n firstDate: model.firstDate,\n lastDate: model.lastDate,\n focusedDate: model.focusDate,\n months: model.months.map(viewModel => viewModel.firstDate)\n };\n let navigationPrevented = false;\n // emitting navigation event if the first month changes\n if (!newDate.equals(oldDate)) {\n this.navigate.emit({\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\n next: { year: newDate.year, month: newDate.month },\n preventDefault: () => navigationPrevented = true\n });\n // can't prevent the very first navigation\n if (navigationPrevented && oldDate !== null) {\n this._service.open(oldDate);\n return;\n }\n }\n const newSelectedDate = model.selectedDate;\n const newFocusedDate = model.focusDate;\n const oldFocusedDate = this.model ? this.model.focusDate : null;\n this.model = model;\n // handling selection change\n if (isChangedDate(newSelectedDate, this._controlValue)) {\n this._controlValue = newSelectedDate;\n this.onTouched();\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\n }\n // handling focus change\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\n this.focus();\n }\n cd.markForCheck();\n });\n }\n /**\n * Returns the readonly public state of the datepicker\n *\n * @since 5.2.0\n */\n get state() { return this._publicState; }\n /**\n * Returns the calendar service used in the specific datepicker instance.\n *\n * @since 5.3.0\n */\n get calendar() { return this._calendar; }\n /**\n * Focuses on given date.\n */\n focusDate(date) { this._service.focus(NgbDate.from(date)); }\n /**\n * Selects focused date.\n */\n focusSelect() { this._service.focusSelect(); }\n focus() {\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const elementToFocus = this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\n if (elementToFocus) {\n elementToFocus.focus();\n }\n });\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n this._service.open(NgbDate.from(date ? date.day ? date : Object.assign(Object.assign({}, date), { day: 1 }) : null));\n }\n ngAfterViewInit() {\n this._ngZone.runOutsideAngular(() => {\n const focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\n const focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\n const { nativeElement } = this._elementRef;\n // we're changing 'focusVisible' only when entering or leaving months view\n // and ignoring all focus events where both 'target' and 'related' target are day cells\n merge(focusIns$, focusOuts$)\n .pipe(filter(({ target, relatedTarget }) => !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day') &&\n nativeElement.contains(target) && nativeElement.contains(relatedTarget))), takeUntil(this._destroyed$))\n .subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\n });\n }\n ngOnDestroy() { this._destroyed$.next(); }\n ngOnInit() {\n if (this.model === undefined) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays', 'weekdays']\n .forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n this.navigateTo(this.startDate);\n }\n if (!this.dayTemplate) {\n this.dayTemplate = this._defaultDayTemplate;\n }\n }\n ngOnChanges(changes) {\n const inputs = {};\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\n 'outsideDays', 'weekdays']\n .filter(name => name in changes)\n .forEach(name => inputs[name] = this[name]);\n this._service.set(inputs);\n if ('startDate' in changes) {\n const { currentValue, previousValue } = changes.startDate;\n if (isChangedMonth(previousValue, currentValue)) {\n this.navigateTo(this.startDate);\n }\n }\n }\n onDateSelect(date) {\n this._service.focus(date);\n this._service.select(date, { emitEvent: true });\n }\n onNavigateDateSelect(date) { this._service.open(date); }\n onNavigateEvent(event) {\n switch (event) {\n case NavigationEvent.PREV:\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\n break;\n case NavigationEvent.NEXT:\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\n break;\n }\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(disabled) { this._service.set({ disabled }); }\n writeValue(value) {\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\n this._service.select(this._controlValue);\n }\n}\nNgbDatepicker.ɵfac = function NgbDatepicker_Factory(t) { return new (t || NgbDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbDatepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepicker, selectors: [[\"ngb-datepicker\"]], contentQueries: function NgbDatepicker_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDatepickerContent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n } }, viewQuery: function NgbDatepicker_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c10, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._defaultDayTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentEl = _t.first);\n } }, inputs: { dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", weekdays: \"weekdays\" }, outputs: { navigate: \"navigate\", dateSelect: \"dateSelect\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 5, consts: [[\"defaultDayTemplate\", \"\"], [\"defaultContentTemplate\", \"\"], [1, \"ngb-dp-header\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\", 4, \"ngIf\"], [1, \"ngb-dp-content\"], [\"content\", \"\"], [3, \"ngTemplateOutlet\"], [\"ngbDatepickerDayView\", \"\", 3, \"date\", \"currentMonth\", \"selected\", \"disabled\", \"focused\"], [\"class\", \"ngb-dp-month\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-month\"], [\"class\", \"ngb-dp-month-name\", 4, \"ngIf\"], [3, \"month\"], [1, \"ngb-dp-month-name\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\"]], template: function NgbDatepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_0_Template, 1, 5, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbDatepicker_ng_template_2_Template, 1, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(4, \"div\", 2);\n ɵngcc0.ɵɵtemplate(5, NgbDatepicker_ngb_datepicker_navigation_5_Template, 1, 7, \"ngb-datepicker-navigation\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 4, 5);\n ɵngcc0.ɵɵtemplate(8, NgbDatepicker_ng_template_8_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, NgbDatepicker_ng_template_9_Template, 0, 0, \"ng-template\", 6);\n } if (rf & 2) {\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigation !== \"none\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ngb-dp-months\", !ctx.contentTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.contentTemplate == null ? null : ctx.contentTemplate.templateRef) || _r2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.footerTemplate);\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, NgbDatepickerDayView, ɵngcc1.NgForOf, NgbDatepickerMonth, NgbDatepickerNavigation]; }, styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepicker.ctorParameters = () => [\n { type: NgbDatepickerService },\n { type: NgbCalendar },\n { type: NgbDatepickerI18n },\n { type: NgbDatepickerConfig },\n { type: ChangeDetectorRef },\n { type: ElementRef },\n { type: NgbDateAdapter },\n { type: NgZone }\n];\nNgbDatepicker.propDecorators = {\n _defaultDayTemplate: [{ type: ViewChild, args: ['defaultDayTemplate', { static: true },] }],\n _contentEl: [{ type: ViewChild, args: ['content', { static: true },] }],\n contentTemplate: [{ type: ContentChild, args: [NgbDatepickerContent, { static: true },] }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n maxDate: [{ type: Input }],\n minDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n weekdays: [{ type: Input }],\n navigate: [{ type: Output }],\n dateSelect: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepicker, [{\n type: Component,\n args: [{\n exportAs: 'ngbDatepicker',\n selector: 'ngb-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n
    \n
    \n
    \n\n \n
    \n
    1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\n {{ i18n.getMonthLabel(month.firstDate) }}\n
    \n \n
    \n
    \n\n
    \n \n \n
    \n\n
    \n \n
    \n\n \n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService],\n styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDatepickerI18n }, { type: NgbDatepickerConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: NgbDateAdapter }, { type: ɵngcc0.NgZone }]; }, { navigate: [{\n type: Output\n }], dateSelect: [{\n type: Output\n }], dayTemplate: [{\n type: Input\n }], _defaultDayTemplate: [{\n type: ViewChild,\n args: ['defaultDayTemplate', { static: true }]\n }], _contentEl: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [NgbDatepickerContent, { static: true }]\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], weekdays: [{\n type: Input\n }] }); })();\n\nvar Key;\n(function (Key) {\n Key[Key[\"Tab\"] = 9] = \"Tab\";\n Key[Key[\"Enter\"] = 13] = \"Enter\";\n Key[Key[\"Escape\"] = 27] = \"Escape\";\n Key[Key[\"Space\"] = 32] = \"Space\";\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\n Key[Key[\"End\"] = 35] = \"End\";\n Key[Key[\"Home\"] = 36] = \"Home\";\n Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\n Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\n Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\n Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\n})(Key || (Key = {}));\n\n/**\n * A service that represents the keyboard navigation.\n *\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\n *\n * @since 5.2.0\n */\nclass NgbDatepickerKeyboardService {\n /**\n * Processes a keyboard event.\n */\n processKey(event, datepicker) {\n const { state, calendar } = datepicker;\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.PageUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.PageDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\n break;\n case Key.End:\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\n break;\n case Key.Home:\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\n break;\n case Key.ArrowLeft:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowUp:\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.ArrowRight:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\n break;\n case Key.ArrowDown:\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\n break;\n case Key.Enter:\n case Key.Space:\n datepicker.focusSelect();\n break;\n default:\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n }\n}\nNgbDatepickerKeyboardService.ɵfac = function NgbDatepickerKeyboardService_Factory(t) { return new (t || NgbDatepickerKeyboardService)(); };\nNgbDatepickerKeyboardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbDatepickerKeyboardService_Factory() { return new NgbDatepickerKeyboardService(); }, token: NgbDatepickerKeyboardService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerKeyboardService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\n * the `` when you want to customize months layout.\n *\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\n *\n * @since 5.3.0\n */\nclass NgbDatepickerMonth {\n constructor(i18n, datepicker, _keyboardService, _service) {\n this.i18n = i18n;\n this.datepicker = datepicker;\n this._keyboardService = _keyboardService;\n this._service = _service;\n }\n /**\n * The first date of month to be rendered.\n *\n * This month must one of the months present in the\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\n */\n set month(month) {\n this.viewModel = this._service.getMonth(month);\n }\n onKeyDown(event) { this._keyboardService.processKey(event, this.datepicker); }\n doSelect(day) {\n if (!day.context.disabled && !day.hidden) {\n this.datepicker.onDateSelect(day.date);\n }\n }\n}\nNgbDatepickerMonth.ɵfac = function NgbDatepickerMonth_Factory(t) { return new (t || NgbDatepickerMonth)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepicker), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerKeyboardService), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService)); };\nNgbDatepickerMonth.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerMonth, selectors: [[\"ngb-datepicker-month\"]], hostAttrs: [\"role\", \"grid\"], hostBindings: function NgbDatepickerMonth_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function NgbDatepickerMonth_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } }, inputs: { month: \"month\" }, decls: 2, vars: 2, consts: [[\"class\", \"ngb-dp-week ngb-dp-weekdays\", \"role\", \"row\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"row\", 1, \"ngb-dp-week\", \"ngb-dp-weekdays\"], [\"class\", \"ngb-dp-weekday ngb-dp-showweek small\", 4, \"ngIf\"], [\"class\", \"ngb-dp-weekday small\", \"role\", \"columnheader\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-weekday\", \"ngb-dp-showweek\", \"small\"], [\"role\", \"columnheader\", 1, \"ngb-dp-weekday\", \"small\"], [\"class\", \"ngb-dp-week\", \"role\", \"row\", 4, \"ngIf\"], [\"role\", \"row\", 1, \"ngb-dp-week\"], [\"class\", \"ngb-dp-week-number small text-muted\", 4, \"ngIf\"], [\"class\", \"ngb-dp-day\", \"role\", \"gridcell\", 3, \"disabled\", \"tabindex\", \"hidden\", \"ngb-dp-today\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-week-number\", \"small\", \"text-muted\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"tabindex\", \"click\"], [3, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbDatepickerMonth_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_div_0_Template, 3, 2, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.viewModel.weekdays.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.viewModel.weeks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"], encapsulation: 2 });\nNgbDatepickerMonth.ctorParameters = () => [\n { type: NgbDatepickerI18n },\n { type: NgbDatepicker },\n { type: NgbDatepickerKeyboardService },\n { type: NgbDatepickerService }\n];\nNgbDatepickerMonth.propDecorators = {\n month: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerMonth, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-month',\n host: { 'role': 'grid', '(keydown)': 'onKeyDown($event)' },\n encapsulation: ViewEncapsulation.None,\n template: `\n
    0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\n
    {{ i18n.getWeekLabel() }}
    \n
    {{ weekday }}
    \n
    \n \n
    \n
    {{ i18n.getWeekNumerals(week.number) }}
    \n
    \n \n \n \n
    \n
    \n
    \n `,\n styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{line-height:2rem;text-align:center;font-style:italic}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{border-bottom:1px solid rgba(0,0,0,.125);border-radius:0;background-color:#f8f9fa;background-color:var(--light)}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{width:2rem;height:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: NgbDatepicker }, { type: NgbDatepickerKeyboardService }, { type: NgbDatepickerService }]; }, { month: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerNavigation {\n constructor(i18n) {\n this.i18n = i18n;\n this.navigation = NavigationEvent;\n this.months = [];\n this.navigate = new EventEmitter();\n this.select = new EventEmitter();\n }\n onClickPrev(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.PREV);\n }\n onClickNext(event) {\n event.currentTarget.focus();\n this.navigate.emit(this.navigation.NEXT);\n }\n}\nNgbDatepickerNavigation.ɵfac = function NgbDatepickerNavigation_Factory(t) { return new (t || NgbDatepickerNavigation)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerNavigation.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigation, selectors: [[\"ngb-datepicker-navigation\"]], inputs: { months: \"months\", date: \"date\", disabled: \"disabled\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, outputs: { navigate: \"navigate\", select: \"select\" }, decls: 8, vars: 4, consts: function () { let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13 = goog.getMsg(\"Previous month\");\n i18n_12 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13;\n }\n else {\n i18n_12 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15 = goog.getMsg(\"Previous month\");\n i18n_14 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15;\n }\n else {\n i18n_14 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17 = goog.getMsg(\"Next month\");\n i18n_16 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17;\n }\n else {\n i18n_16 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19 = goog.getMsg(\"Next month\");\n i18n_18 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19;\n }\n else {\n i18n_18 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } return [[1, \"ngb-dp-arrow\"], [\"type\", \"button\", \"aria-label\", i18n_12, \"title\", i18n_14, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-chevron\"], [\"class\", \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"ngb-dp-arrow\", \"right\"], [\"type\", \"button\", \"aria-label\", i18n_16, \"title\", i18n_18, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"ngb-dp-arrow\", 4, \"ngIf\"], [1, \"ngb-dp-month-name\"]]; }, template: function NgbDatepickerNavigation_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_1_listener($event) { return ctx.onClickPrev($event); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template, 1, 4, \"ngb-datepicker-navigation-select\", 3);\n ɵngcc0.ɵɵtemplate(4, NgbDatepickerNavigation_4_Template, 1, 1, undefined, 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5);\n ɵngcc0.ɵɵelementStart(6, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_6_listener($event) { return ctx.onClickNext($event); });\n ɵngcc0.ɵɵelement(7, \"span\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.prevDisabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSelect);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.showSelect);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.nextDisabled);\n } }, directives: function () { return [ɵngcc1.NgIf, NgbDatepickerNavigationSelect, ɵngcc1.NgForOf]; }, styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepickerNavigation.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\nNgbDatepickerNavigation.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n showSelect: [{ type: Input }],\n prevDisabled: [{ type: Input }],\n nextDisabled: [{ type: Input }],\n selectBoxes: [{ type: Input }],\n navigate: [{ type: Output }],\n select: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigation, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n
    \n \n
    \n \n \n\n \n
    0\">
    \n
    \n {{ i18n.getMonthLabel(month.firstDate) }}\n
    \n
    \n
    \n
    \n \n
    \n `,\n styles: [\"ngb-datepicker-navigation{display:flex;align-items:center}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;width:.75em;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg)}.ngb-dp-arrow{display:flex;flex:1 1 auto;padding-right:0;padding-left:0;margin:0;width:2rem;height:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{transform:rotate(45deg);margin-left:.15em;margin-right:.25em}.ngb-dp-arrow-btn{padding:0 .25rem;margin:0 .5rem;border:none;background-color:transparent;z-index:1}.ngb-dp-arrow-btn:focus{outline-width:1px;outline-style:auto}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { months: [{\n type: Input\n }], navigate: [{\n type: Output\n }], select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showSelect: [{\n type: Input\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], selectBoxes: [{\n type: Input\n }] }); })();\n\nconst isContainedIn = (element, array) => array ? array.some(item => item.contains(element)) : false;\nconst ɵ0$3 = isContainedIn;\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\nconst ɵ1 = matchesSelectorIfAny;\nconst ɵ2 = () => {\n const isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) ||\n (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\n const isAndroid = () => /Android/.test(navigator.userAgent);\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\n};\n// we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\nconst isMobile = (ɵ2)();\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\n// when tapping on the triggering element\nconst wrapAsyncForMobile = fn => isMobile ? () => setTimeout(() => fn(), 100) : fn;\nconst ɵ3 = wrapAsyncForMobile;\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\n // closing on ESC and outside clicks\n if (type) {\n zone.runOutsideAngular(wrapAsyncForMobile(() => {\n const shouldCloseOnClick = (event) => {\n const element = event.target;\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\n return false;\n }\n if (type === 'inside') {\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\n }\n else if (type === 'outside') {\n return !isContainedIn(element, insideElements);\n }\n else /* if (type === true) */ {\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\n }\n };\n const escapes$ = fromEvent(document, 'keydown')\n .pipe(takeUntil(closed$), \n // tslint:disable-next-line:deprecation\n filter(e => e.which === Key.Escape), tap(e => e.preventDefault()));\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\n // because on 'mouseup' DOM nodes might be detached\n const mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\n const closeableClicks$ = fromEvent(document, 'mouseup')\n .pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(0), takeUntil(closed$));\n race([\n escapes$.pipe(map(_ => 0 /* ESCAPE */)), closeableClicks$.pipe(map(_ => 1 /* CLICK */))\n ]).subscribe((source) => zone.run(() => close(source)));\n }));\n }\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\n].join(', ');\n/**\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\n */\nfunction getFocusableBoundaryElements(element) {\n const list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))\n .filter(el => el.tabIndex !== -1);\n return [list[0], list[list.length - 1]];\n}\n/**\n * Function that enforces browser focus to be trapped inside a DOM element.\n *\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\n *\n * @param zone Angular zone\n * @param element The element around which focus will be trapped inside\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\n * and free internal resources\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\n * false)\n */\nconst ngbFocusTrap = (zone, element, stopFocusTrap$, refocusOnClick = false) => {\n zone.runOutsideAngular(() => {\n // last focused element\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\n // 'tab' / 'shift+tab' stream\n fromEvent(element, 'keydown')\n .pipe(takeUntil(stopFocusTrap$), \n // tslint:disable:deprecation\n filter(e => e.which === Key.Tab), \n // tslint:enable:deprecation\n withLatestFrom(lastFocusedElement$))\n .subscribe(([tabEvent, focusedElement]) => {\n const [first, last] = getFocusableBoundaryElements(element);\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\n last.focus();\n tabEvent.preventDefault();\n }\n if (focusedElement === last && !tabEvent.shiftKey) {\n first.focus();\n tabEvent.preventDefault();\n }\n });\n // inside click\n if (refocusOnClick) {\n fromEvent(element, 'click')\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => arr[1]))\n .subscribe(lastFocusedElement => lastFocusedElement.focus());\n }\n });\n};\n\n// previous version:\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\nclass Positioning {\n getAllStyles(element) { return window.getComputedStyle(element); }\n getStyle(element, prop) { return this.getAllStyles(element)[prop]; }\n isStaticPositioned(element) {\n return (this.getStyle(element, 'position') || 'static') === 'static';\n }\n offsetParent(element) {\n let offsetParentEl = element.offsetParent || document.documentElement;\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\n offsetParentEl = offsetParentEl.offsetParent;\n }\n return offsetParentEl || document.documentElement;\n }\n position(element, round = true) {\n let elPosition;\n let parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\n if (this.getStyle(element, 'position') === 'fixed') {\n elPosition = element.getBoundingClientRect();\n elPosition = {\n top: elPosition.top,\n bottom: elPosition.bottom,\n left: elPosition.left,\n right: elPosition.right,\n height: elPosition.height,\n width: elPosition.width\n };\n }\n else {\n const offsetParentEl = this.offsetParent(element);\n elPosition = this.offset(element, false);\n if (offsetParentEl !== document.documentElement) {\n parentOffset = this.offset(offsetParentEl, false);\n }\n parentOffset.top += offsetParentEl.clientTop;\n parentOffset.left += offsetParentEl.clientLeft;\n }\n elPosition.top -= parentOffset.top;\n elPosition.bottom -= parentOffset.top;\n elPosition.left -= parentOffset.left;\n elPosition.right -= parentOffset.left;\n if (round) {\n elPosition.top = Math.round(elPosition.top);\n elPosition.bottom = Math.round(elPosition.bottom);\n elPosition.left = Math.round(elPosition.left);\n elPosition.right = Math.round(elPosition.right);\n }\n return elPosition;\n }\n offset(element, round = true) {\n const elBcr = element.getBoundingClientRect();\n const viewportOffset = {\n top: window.pageYOffset - document.documentElement.clientTop,\n left: window.pageXOffset - document.documentElement.clientLeft\n };\n let elOffset = {\n height: elBcr.height || element.offsetHeight,\n width: elBcr.width || element.offsetWidth,\n top: elBcr.top + viewportOffset.top,\n bottom: elBcr.bottom + viewportOffset.top,\n left: elBcr.left + viewportOffset.left,\n right: elBcr.right + viewportOffset.left\n };\n if (round) {\n elOffset.height = Math.round(elOffset.height);\n elOffset.width = Math.round(elOffset.width);\n elOffset.top = Math.round(elOffset.top);\n elOffset.bottom = Math.round(elOffset.bottom);\n elOffset.left = Math.round(elOffset.left);\n elOffset.right = Math.round(elOffset.right);\n }\n return elOffset;\n }\n /*\n Return false if the element to position is outside the viewport\n */\n positionElements(hostElement, targetElement, placement, appendToBody) {\n const [placementPrimary = 'top', placementSecondary = 'center'] = placement.split('-');\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\n const targetElStyles = this.getAllStyles(targetElement);\n const marginTop = parseFloat(targetElStyles.marginTop);\n const marginBottom = parseFloat(targetElStyles.marginBottom);\n const marginLeft = parseFloat(targetElStyles.marginLeft);\n const marginRight = parseFloat(targetElStyles.marginRight);\n let topPosition = 0;\n let leftPosition = 0;\n switch (placementPrimary) {\n case 'top':\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\n break;\n case 'bottom':\n topPosition = (hostElPosition.top + hostElPosition.height);\n break;\n case 'left':\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\n break;\n case 'right':\n leftPosition = (hostElPosition.left + hostElPosition.width);\n break;\n }\n switch (placementSecondary) {\n case 'top':\n topPosition = hostElPosition.top;\n break;\n case 'bottom':\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\n break;\n case 'left':\n leftPosition = hostElPosition.left;\n break;\n case 'right':\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\n break;\n case 'center':\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\n }\n else {\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\n }\n break;\n }\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\n targetElement.style.transform = `translate(${Math.round(leftPosition)}px, ${Math.round(topPosition)}px)`;\n // Check if the targetElement is inside the viewport\n const targetElBCR = targetElement.getBoundingClientRect();\n const html = document.documentElement;\n const windowHeight = window.innerHeight || html.clientHeight;\n const windowWidth = window.innerWidth || html.clientWidth;\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\n targetElBCR.bottom <= windowHeight;\n }\n}\nconst placementSeparator = /\\s+/;\nconst positionService = new Positioning();\n/*\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\n * Returns the applied placement.\n * In case of auto placement, placements are selected in order\n * 'top', 'bottom', 'left', 'right',\n * 'top-left', 'top-right',\n * 'bottom-left', 'bottom-right',\n * 'left-top', 'left-bottom',\n * 'right-top', 'right-bottom'.\n * */\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\n let placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\n const allowedPlacements = [\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\n 'right-top', 'right-bottom'\n ];\n const classList = targetElement.classList;\n const addClassesToTarget = (targetPlacement) => {\n const [primary, secondary] = targetPlacement.split('-');\n const classes = [];\n if (baseClass) {\n classes.push(`${baseClass}-${primary}`);\n if (secondary) {\n classes.push(`${baseClass}-${primary}-${secondary}`);\n }\n classes.forEach((classname) => { classList.add(classname); });\n }\n return classes;\n };\n // Remove old placement classes to avoid issues\n if (baseClass) {\n allowedPlacements.forEach((placementToRemove) => { classList.remove(`${baseClass}-${placementToRemove}`); });\n }\n // replace auto placement with other placements\n let hasAuto = placementVals.findIndex(val => val === 'auto');\n if (hasAuto >= 0) {\n allowedPlacements.forEach(function (obj) {\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\n placementVals.splice(hasAuto++, 1, obj);\n }\n });\n }\n // coordinates where to position\n // Required for transform:\n const style = targetElement.style;\n style.position = 'absolute';\n style.top = '0';\n style.left = '0';\n style['will-change'] = 'transform';\n let testPlacement = null;\n let isInViewport = false;\n for (testPlacement of placementVals) {\n let addedClasses = addClassesToTarget(testPlacement);\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\n isInViewport = true;\n break;\n }\n // Remove the baseClasses for further calculation\n if (baseClass) {\n addedClasses.forEach((classname) => { classList.remove(classname); });\n }\n }\n if (!isInViewport) {\n // If nothing match, the first placement is the default one\n testPlacement = placementVals[0];\n addClassesToTarget(testPlacement);\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\n }\n return testPlacement;\n}\n\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\n return new NgbDateISOParserFormatter();\n}\n/**\n * An abstract service for parsing and formatting dates for the\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\n * input element.\n *\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\n * in the input.\n *\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\n * to use an alternative string format or a custom parsing logic.\n *\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\n */\nclass NgbDateParserFormatter {\n}\nNgbDateParserFormatter.ɵfac = function NgbDateParserFormatter_Factory(t) { return new (t || NgbDateParserFormatter)(); };\nNgbDateParserFormatter.ɵprov = i0.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateParserFormatter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY }]\n }], null, null); })();\nclass NgbDateISOParserFormatter extends NgbDateParserFormatter {\n parse(value) {\n if (value != null) {\n const dateParts = value.trim().split('-');\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\n return { year: toInteger(dateParts[0]), month: null, day: null };\n }\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\n }\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\n }\n }\n return null;\n }\n format(date) {\n return date ?\n `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}` :\n '';\n }\n}\nNgbDateISOParserFormatter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateISOParserFormatter_BaseFactory; return function NgbDateISOParserFormatter_Factory(t) { return (ɵNgbDateISOParserFormatter_BaseFactory || (ɵNgbDateISOParserFormatter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter)))(t || NgbDateISOParserFormatter); }; }();\nNgbDateISOParserFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateISOParserFormatter, factory: NgbDateISOParserFormatter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateISOParserFormatter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the datepicker inputs used in the application.\n *\n * @since 5.2.0\n */\nclass NgbInputDatepickerConfig extends NgbDatepickerConfig {\n constructor() {\n super(...arguments);\n this.autoClose = true;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n this.restoreFocus = true;\n }\n}\nNgbInputDatepickerConfig.ɵfac = /*@__PURE__*/ function () { let ɵNgbInputDatepickerConfig_BaseFactory; return function NgbInputDatepickerConfig_Factory(t) { return (ɵNgbInputDatepickerConfig_BaseFactory || (ɵNgbInputDatepickerConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbInputDatepickerConfig)))(t || NgbInputDatepickerConfig); }; }();\nNgbInputDatepickerConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbInputDatepickerConfig_Factory() { return new NgbInputDatepickerConfig(); }, token: NgbInputDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\n * A directive that allows to stick a datepicker popup to an input field.\n *\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\n */\nclass NgbInputDatepicker {\n constructor(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _calendar, _dateAdapter, _document, _changeDetector, config) {\n this._parserFormatter = _parserFormatter;\n this._elRef = _elRef;\n this._vcRef = _vcRef;\n this._renderer = _renderer;\n this._cfr = _cfr;\n this._ngZone = _ngZone;\n this._calendar = _calendar;\n this._dateAdapter = _dateAdapter;\n this._document = _document;\n this._changeDetector = _changeDetector;\n this._cRef = null;\n this._disabled = false;\n this._elWithFocus = null;\n this._model = null;\n /**\n * An event emitted when user selects a date using keyboard or mouse.\n *\n * The payload of the event is currently selected `NgbDate`.\n *\n * @since 1.1.1\n */\n this.dateSelect = new EventEmitter();\n /**\n * Event emitted right after the navigation happens and displayed month changes.\n *\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\n */\n this.navigate = new EventEmitter();\n /**\n * An event fired after closing datepicker window.\n *\n * @since 4.2.0\n */\n this.closed = new EventEmitter();\n this._onChange = (_) => { };\n this._onTouched = () => { };\n this._validatorChange = () => { };\n ['autoClose', 'container', 'positionTarget', 'placement'].forEach(input => this[input] = config[input]);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => this._updatePopupPosition());\n }\n get disabled() {\n return this._disabled;\n }\n set disabled(value) {\n this._disabled = value === '' || (value && value !== 'false');\n if (this.isOpen()) {\n this._cRef.instance.setDisabledState(this._disabled);\n }\n }\n registerOnChange(fn) { this._onChange = fn; }\n registerOnTouched(fn) { this._onTouched = fn; }\n registerOnValidatorChange(fn) { this._validatorChange = fn; }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n validate(c) {\n const { value } = c;\n if (value != null) {\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\n if (!ngbDate) {\n return { 'ngbDate': { invalid: value } };\n }\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\n return { 'ngbDate': { minDate: { minDate: this.minDate, actual: value } } };\n }\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\n return { 'ngbDate': { maxDate: { maxDate: this.maxDate, actual: value } } };\n }\n }\n return null;\n }\n writeValue(value) {\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\n this._writeModelValue(this._model);\n }\n manualDateChange(value, updateView = false) {\n const inputValueChanged = value !== this._inputValue;\n if (inputValueChanged) {\n this._inputValue = value;\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\n }\n if (inputValueChanged || !updateView) {\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\n }\n if (updateView && this._model) {\n this._writeModelValue(this._model);\n }\n }\n isOpen() { return !!this._cRef; }\n /**\n * Opens the datepicker popup.\n *\n * If the related form control contains a valid date, the corresponding month will be opened.\n */\n open() {\n if (!this.isOpen()) {\n const cf = this._cfr.resolveComponentFactory(NgbDatepicker);\n this._cRef = this._vcRef.createComponent(cf);\n this._applyPopupStyling(this._cRef.location.nativeElement);\n this._applyDatepickerInputs(this._cRef.instance);\n this._subscribeForDatepickerOutputs(this._cRef.instance);\n this._cRef.instance.ngOnInit();\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\n // date selection event handling\n this._cRef.instance.registerOnChange((selectedDate) => {\n this.writeValue(selectedDate);\n this._onChange(selectedDate);\n this._onTouched();\n });\n this._cRef.changeDetectorRef.detectChanges();\n this._cRef.instance.setDisabledState(this.disabled);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\n }\n // focus handling\n this._elWithFocus = this._document.activeElement;\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\n this._cRef.instance.focus();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\n }\n }\n /**\n * Closes the datepicker popup.\n */\n close() {\n if (this.isOpen()) {\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\n this._cRef = null;\n this.closed.emit();\n this._changeDetector.markForCheck();\n // restore focus\n let elementToFocus = this._elWithFocus;\n if (isString(this.restoreFocus)) {\n elementToFocus = this._document.querySelector(this.restoreFocus);\n }\n else if (this.restoreFocus !== undefined) {\n elementToFocus = this.restoreFocus;\n }\n // in IE document.activeElement can contain an object without 'focus()' sometimes\n if (elementToFocus && elementToFocus['focus']) {\n elementToFocus.focus();\n }\n else {\n this._document.body.focus();\n }\n }\n }\n /**\n * Toggles the datepicker popup.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Navigates to the provided date.\n *\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\n * If nothing or invalid date provided calendar will open current month.\n *\n * Use the `[startDate]` input as an alternative.\n */\n navigateTo(date) {\n if (this.isOpen()) {\n this._cRef.instance.navigateTo(date);\n }\n }\n onBlur() { this._onTouched(); }\n onFocus() { this._elWithFocus = this._elRef.nativeElement; }\n ngOnChanges(changes) {\n if (changes['minDate'] || changes['maxDate']) {\n this._validatorChange();\n if (this.isOpen()) {\n if (changes['minDate']) {\n this._cRef.instance.minDate = this.minDate;\n }\n if (changes['maxDate']) {\n this._cRef.instance.maxDate = this.maxDate;\n }\n this._cRef.instance.ngOnChanges(changes);\n }\n }\n if (changes['datepickerClass']) {\n const { currentValue, previousValue } = changes['datepickerClass'];\n this._applyPopupClass(currentValue, previousValue);\n }\n }\n ngOnDestroy() {\n this.close();\n this._zoneSubscription.unsubscribe();\n }\n _applyDatepickerInputs(datepickerInstance) {\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekNumbers', 'weekdays']\n .forEach((optionName) => {\n if (this[optionName] !== undefined) {\n datepickerInstance[optionName] = this[optionName];\n }\n });\n datepickerInstance.startDate = this.startDate || this._model;\n }\n _applyPopupClass(newClass, oldClass) {\n var _a;\n const popupEl = (_a = this._cRef) === null || _a === void 0 ? void 0 : _a.location.nativeElement;\n if (popupEl) {\n if (newClass) {\n this._renderer.addClass(popupEl, newClass);\n }\n if (oldClass) {\n this._renderer.removeClass(popupEl, oldClass);\n }\n }\n }\n _applyPopupStyling(nativeElement) {\n this._renderer.addClass(nativeElement, 'dropdown-menu');\n this._renderer.addClass(nativeElement, 'show');\n if (this.container === 'body') {\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\n }\n this._applyPopupClass(this.datepickerClass);\n }\n _subscribeForDatepickerOutputs(datepickerInstance) {\n datepickerInstance.navigate.subscribe(navigateEvent => this.navigate.emit(navigateEvent));\n datepickerInstance.dateSelect.subscribe(date => {\n this.dateSelect.emit(date);\n if (this.autoClose === true || this.autoClose === 'inside') {\n this.close();\n }\n });\n }\n _writeModelValue(model) {\n const value = this._parserFormatter.format(model);\n this._inputValue = value;\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\n if (this.isOpen()) {\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\n this._onTouched();\n }\n }\n _fromDateStruct(date) {\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\n }\n _updatePopupPosition() {\n if (!this._cRef) {\n return;\n }\n let hostElement;\n if (isString(this.positionTarget)) {\n hostElement = this._document.querySelector(this.positionTarget);\n }\n else if (this.positionTarget instanceof HTMLElement) {\n hostElement = this.positionTarget;\n }\n else {\n hostElement = this._elRef.nativeElement;\n }\n if (this.positionTarget && !hostElement) {\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\n }\n positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\n }\n}\nNgbInputDatepicker.ɵfac = function NgbInputDatepicker_Factory(t) { return new (t || NgbInputDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDateParserFormatter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbInputDatepickerConfig)); };\nNgbInputDatepicker.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbInputDatepicker, selectors: [[\"input\", \"ngbDatepicker\", \"\"]], hostVars: 1, hostBindings: function NgbInputDatepicker_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function NgbInputDatepicker_input_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value); })(\"change\", function NgbInputDatepicker_change_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value, true); })(\"focus\", function NgbInputDatepicker_focus_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function NgbInputDatepicker_blur_HostBindingHandler() { return ctx.onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", autoClose: \"autoClose\", datepickerClass: \"datepickerClass\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", placement: \"placement\", restoreFocus: \"restoreFocus\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", container: \"container\", positionTarget: \"positionTarget\", weekdays: \"weekdays\" }, outputs: { dateSelect: \"dateSelect\", navigate: \"navigate\", closed: \"closed\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]), ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbInputDatepicker.ctorParameters = () => [\n { type: NgbDateParserFormatter },\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: NgZone },\n { type: NgbCalendar },\n { type: NgbDateAdapter },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: NgbInputDatepickerConfig }\n];\nNgbInputDatepicker.propDecorators = {\n autoClose: [{ type: Input }],\n datepickerClass: [{ type: Input }],\n dayTemplate: [{ type: Input }],\n dayTemplateData: [{ type: Input }],\n displayMonths: [{ type: Input }],\n firstDayOfWeek: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n markDisabled: [{ type: Input }],\n minDate: [{ type: Input }],\n maxDate: [{ type: Input }],\n navigation: [{ type: Input }],\n outsideDays: [{ type: Input }],\n placement: [{ type: Input }],\n restoreFocus: [{ type: Input }],\n showWeekNumbers: [{ type: Input }],\n startDate: [{ type: Input }],\n container: [{ type: Input }],\n positionTarget: [{ type: Input }],\n weekdays: [{ type: Input }],\n dateSelect: [{ type: Output }],\n navigate: [{ type: Output }],\n closed: [{ type: Output }],\n disabled: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepicker, [{\n type: Directive,\n args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]\n }]\n }], function () { return [{ type: NgbDateParserFormatter }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.NgZone }, { type: NgbCalendar }, { type: NgbDateAdapter }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbInputDatepickerConfig }]; }, { dateSelect: [{\n type: Output\n }], navigate: [{\n type: Output\n }], closed: [{\n type: Output\n }], disabled: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], datepickerClass: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], placement: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], container: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }], weekdays: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerDayView {\n constructor(i18n) {\n this.i18n = i18n;\n }\n isMuted() { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); }\n}\nNgbDatepickerDayView.ɵfac = function NgbDatepickerDayView_Factory(t) { return new (t || NgbDatepickerDayView)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerDayView.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerDayView, selectors: [[\"\", \"ngbDatepickerDayView\", \"\"]], hostAttrs: [1, \"btn-light\"], hostVars: 10, hostBindings: function NgbDatepickerDayView_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"bg-primary\", ctx.selected)(\"text-white\", ctx.selected)(\"text-muted\", ctx.isMuted())(\"outside\", ctx.isMuted())(\"active\", ctx.focused);\n } }, inputs: { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, attrs: _c20, decls: 1, vars: 1, template: function NgbDatepickerDayView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ctx.i18n.getDayNumerals(ctx.date));\n } }, styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView].outside{opacity:.5}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepickerDayView.ctorParameters = () => [\n { type: NgbDatepickerI18n }\n];\nNgbDatepickerDayView.propDecorators = {\n currentMonth: [{ type: Input }],\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n focused: [{ type: Input }],\n selected: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerDayView, [{\n type: Component,\n args: [{\n selector: '[ngbDatepickerDayView]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n },\n template: `{{ i18n.getDayNumerals(date) }}`,\n styles: [\"[ngbDatepickerDayView]{text-align:center;width:2rem;height:2rem;line-height:2rem;border-radius:.25rem;background:transparent}[ngbDatepickerDayView].outside{opacity:.5}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { currentMonth: [{\n type: Input\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], focused: [{\n type: Input\n }], selected: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerNavigationSelect {\n constructor(i18n, _renderer) {\n this.i18n = i18n;\n this._renderer = _renderer;\n this.select = new EventEmitter();\n this._month = -1;\n this._year = -1;\n }\n changeMonth(month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); }\n changeYear(year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); }\n ngAfterViewChecked() {\n if (this.date) {\n if (this.date.month !== this._month) {\n this._month = this.date.month;\n this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\n }\n if (this.date.year !== this._year) {\n this._year = this.date.year;\n this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\n }\n }\n }\n}\nNgbDatepickerNavigationSelect.ɵfac = function NgbDatepickerNavigationSelect_Factory(t) { return new (t || NgbDatepickerNavigationSelect)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgbDatepickerNavigationSelect.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigationSelect, selectors: [[\"ngb-datepicker-navigation-select\"]], viewQuery: function NgbDatepickerNavigationSelect_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c21, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c22, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthSelect = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearSelect = _t.first);\n } }, inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, outputs: { select: \"select\" }, decls: 6, vars: 4, consts: function () { let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24 = goog.getMsg(\"Select month\");\n i18n_23 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24;\n }\n else {\n i18n_23 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_25; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26 = goog.getMsg(\"Select month\");\n i18n_25 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26;\n }\n else {\n i18n_25 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_27; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28 = goog.getMsg(\"Select year\");\n i18n_27 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28;\n }\n else {\n i18n_27 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } let i18n_29; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30 = goog.getMsg(\"Select year\");\n i18n_29 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30;\n }\n else {\n i18n_29 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } return [[\"aria-label\", i18n_23, \"title\", i18n_25, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"month\", \"\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"aria-label\", i18n_27, \"title\", i18n_29, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"year\", \"\"], [3, \"value\"]]; }, template: function NgbDatepickerNavigationSelect_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"select\", 0, 1);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_0_listener($event) { return ctx.changeMonth($event.target.value); });\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerNavigationSelect_option_2_Template, 2, 3, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"select\", 3, 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_3_listener($event) { return ctx.changeYear($event.target.value); });\n ɵngcc0.ɵɵtemplate(5, NgbDatepickerNavigationSelect_option_5_Template, 2, 2, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.months);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.years);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc2.NgSelectOption, ɵngcc2.ɵNgSelectMultipleOption], styles: [\"ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"], encapsulation: 2, changeDetection: 0 });\nNgbDatepickerNavigationSelect.ctorParameters = () => [\n { type: NgbDatepickerI18n },\n { type: Renderer2 }\n];\nNgbDatepickerNavigationSelect.propDecorators = {\n date: [{ type: Input }],\n disabled: [{ type: Input }],\n months: [{ type: Input }],\n years: [{ type: Input }],\n select: [{ type: Output }],\n monthSelect: [{ type: ViewChild, args: ['month', { static: true, read: ElementRef },] }],\n yearSelect: [{ type: ViewChild, args: ['year', { static: true, read: ElementRef },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigationSelect, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\n \n `,\n styles: [\"ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;padding:0 .5rem;font-size:.875rem;height:1.85rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: ɵngcc0.Renderer2 }]; }, { select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], years: [{\n type: Input\n }], monthSelect: [{\n type: ViewChild,\n args: ['month', { static: true, read: ElementRef }]\n }], yearSelect: [{\n type: ViewChild,\n args: ['year', { static: true, read: ElementRef }]\n }] }); })();\n\nclass NgbCalendarHijri extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = this._setYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = this._setMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return this._setDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = this.toGregorian(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = this.toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return this.fromGregorian(new Date()); }\n isValid(date) {\n return date != null && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\n !isNaN(this.toGregorian(date).getTime());\n }\n _setDay(date, day) {\n day = +day;\n let mDays = this.getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = this._setMonth(date, date.month - 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = this._setMonth(date, date.month + 1);\n mDays = this.getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n }\n _setMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n }\n _setYear(date, year) {\n date.year = +year;\n return date;\n }\n}\nNgbCalendarHijri.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHijri_BaseFactory; return function NgbCalendarHijri_Factory(t) { return (ɵNgbCalendarHijri_BaseFactory || (ɵNgbCalendarHijri_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHijri)))(t || NgbCalendarHijri); }; }();\nNgbCalendarHijri.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHijri, factory: NgbCalendarHijri.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHijri, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * Checks if islamic year is a leap year\n */\nfunction isIslamicLeapYear(hYear) {\n return (14 + 11 * hYear) % 30 < 11;\n}\n/**\n * Checks if gregorian years is a leap year\n */\nfunction isGregorianLeapYear$1(gDate) {\n const year = gDate.getFullYear();\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\n/**\n * Returns the start of Hijri Month.\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\nfunction getIslamicMonthStart(hYear, hMonth) {\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\n}\n/**\n * Returns the start of Hijri year.\n * `year` is any Hijri year.\n */\nfunction getIslamicYearStart(year) {\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\n}\nfunction mod$1(a, b) {\n return a - b * Math.floor(a / b);\n}\n/**\n * The civil calendar is one type of Hijri calendars used in islamic countries.\n * Uses a fixed cycle of alternating 29- and 30-day months,\n * with a leap day added to the last month of 11 out of every 30 years.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\n * Dershowitz.\n */\nconst GREGORIAN_EPOCH$1 = 1721425.5;\nconst ISLAMIC_EPOCH = 1948439.5;\nclass NgbCalendarIslamicCivil extends NgbCalendarHijri {\n /**\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\n * `gDate` is a JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n const gYear = gDate.getFullYear(), gMonth = gDate.getMonth(), gDay = gDate.getDate();\n let julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gDate) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay) + 0.5;\n const days = julianDay - ISLAMIC_EPOCH;\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\n hMonth = Math.min(hMonth, 11);\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n /**\n * Returns the equivalent JS date value for a give input islamic(civil) date.\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\n const wjd = Math.floor(julianDay - 0.5) + 0.5, depoch = wjd - GREGORIAN_EPOCH$1, quadricent = Math.floor(depoch / 146097), dqc = mod$1(depoch, 146097), cent = Math.floor(dqc / 36524), dcent = mod$1(dqc, 36524), quad = Math.floor(dcent / 1461), dquad = mod$1(dcent, 1461), yindex = Math.floor(dquad / 365);\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\n if (!(cent === 4 || yindex === 4)) {\n year++;\n }\n const gYearStart = GREGORIAN_EPOCH$1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400);\n const yearday = wjd - gYearStart;\n const tjd = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear$1(new Date(year, 3, 1)) ? -1 : -2) + 1);\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear$1(new Date(year, 3, 1)) ? 1 : 2;\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\n const tjd2 = GREGORIAN_EPOCH$1 - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\n Math.floor((year - 1) / 400) +\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear$1(new Date(year, month - 1, 1)) ? -1 : -2) +\n 1);\n const day = wjd - tjd2 + 1;\n return new Date(year, month - 1, day);\n }\n /**\n * Returns the number of days in a specific Hijri month.\n * `month` is 1 for Muharram, 2 for Safar, etc.\n * `year` is any Hijri year.\n */\n getDaysPerMonth(month, year) {\n year = year + Math.floor(month / 13);\n month = ((month - 1) % 12) + 1;\n let length = 29 + month % 2;\n if (month === 12 && isIslamicLeapYear(year)) {\n length++;\n }\n return length;\n }\n}\nNgbCalendarIslamicCivil.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicCivil_BaseFactory; return function NgbCalendarIslamicCivil_Factory(t) { return (ɵNgbCalendarIslamicCivil_BaseFactory || (ɵNgbCalendarIslamicCivil_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil)))(t || NgbCalendarIslamicCivil); }; }();\nNgbCalendarIslamicCivil.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicCivil, factory: NgbCalendarIslamicCivil.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicCivil, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\n * This Calendar is used by Saudi Arabia for administrative purpose.\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\n */\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\nconst HIJRI_BEGIN = 1300;\nconst HIJRI_END = 1600;\nconst ONE_DAY = 1000 * 60 * 60 * 24;\nconst MONTH_LENGTH = [\n // 1300-1304\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\n // 1305-1309\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\n // 1310-1314\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\n // 1315-1319\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\n // 1320-1324\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\n // 1325-1329\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\n // 1330-1334\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\n // 1335-1339\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\n // 1340-1344\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\n // 1345-1349\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\n // 1350-1354\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\n // 1355-1359\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\n // 1360-1364\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\n // 1365-1369\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\n // 1370-1374\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\n // 1375-1379\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\n // 1380-1384\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\n // 1385-1389\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\n // 1390-1394\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\n // 1395-1399\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\n // 1400-1404\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\n // 1405-1409\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\n // 1410-1414\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\n // 1415-1419\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\n // 1420-1424\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\n // 1425-1429\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\n // 1430-1434\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\n // 1435-1439\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\n // 1440-1444\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\n // 1445-1449\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\n // 1450-1454\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\n // 1455-1459\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\n // 1460-1464\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\n // 1465-1469\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\n // 1470-1474\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\n // 1475-1479\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\n // 1480-1484\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\n // 1485-1489\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\n // 1490-1494\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\n // 1495-1499\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\n // 1500-1504\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\n // 1505-1509\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\n // 1510-1514\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\n // 1515-1519\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\n // 1520-1524\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\n // 1525-1529\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\n // 1530-1534\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\n // 1535-1539\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\n // 1540-1544\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\n // 1545-1549\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\n // 1550-1554\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\n // 1555-1559\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\n // 1560-1564\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\n // 1565-1569\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\n // 1570-1574\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\n // 1575-1579\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\n // 1580-1584\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\n // 1585-1589\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\n // 1590-1594\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\n // 1595-1599\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\n // 1600\n '001010011101'\n];\nfunction getDaysDiff(date1, date2) {\n // Ignores the time part in date1 and date2:\n const time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\n const time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\n const diff = Math.abs(time1 - time2);\n return Math.round(diff / ONE_DAY);\n}\nclass NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\n /**\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\n * `gdate` is s JS Date to be converted to Hijri.\n */\n fromGregorian(gDate) {\n let hDay = 1, hMonth = 0, hYear = 1300;\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\n let year = 1300;\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\n for (let j = 0; j < 12; j++) {\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\n if (daysDiff <= numOfDays) {\n hDay = daysDiff + 1;\n if (hDay > numOfDays) {\n hDay = 1;\n j++;\n }\n if (j > 11) {\n j = 0;\n year++;\n }\n hMonth = j;\n hYear = year;\n return new NgbDate(hYear, hMonth + 1, hDay);\n }\n daysDiff = daysDiff - numOfDays;\n }\n }\n return null;\n }\n else {\n return super.fromGregorian(gDate);\n }\n }\n /**\n * Converts the current Hijri date to Gregorian.\n */\n toGregorian(hDate) {\n const hYear = hDate.year;\n const hMonth = hDate.month - 1;\n const hDay = hDate.day;\n let gDate = new Date(GREGORIAN_FIRST_DATE);\n let dayDiff = hDay - 1;\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\n for (let m = 0; m < 12; m++) {\n dayDiff += +MONTH_LENGTH[y][m] + 29;\n }\n }\n for (let m = 0; m < hMonth; m++) {\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\n }\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\n }\n else {\n gDate = super.toGregorian(hDate);\n }\n return gDate;\n }\n /**\n * Returns the number of days in a specific Hijri hMonth.\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\n * `hYear` is any Hijri hYear.\n */\n getDaysPerMonth(hMonth, hYear) {\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\n const pos = hYear - HIJRI_BEGIN;\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\n }\n return super.getDaysPerMonth(hMonth, hYear);\n }\n}\nNgbCalendarIslamicUmalqura.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicUmalqura_BaseFactory; return function NgbCalendarIslamicUmalqura_Factory(t) { return (ɵNgbCalendarIslamicUmalqura_BaseFactory || (ɵNgbCalendarIslamicUmalqura_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura)))(t || NgbCalendarIslamicUmalqura); }; }();\nNgbCalendarIslamicUmalqura.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicUmalqura, factory: NgbCalendarIslamicUmalqura.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicUmalqura, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * Returns the equivalent JS date value for a give input Jalali date.\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\n */\nfunction toGregorian$2(jalaliDate) {\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\n let date = julianToGregorian(jdn);\n date.setHours(6, 30, 3, 200);\n return date;\n}\n/**\n * Returns the equivalent jalali date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to jalali.\n * utc to local\n */\nfunction fromGregorian$2(gdate) {\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\n return julianToJalali(g2d);\n}\nfunction setJalaliYear(date, yearValue) {\n date.year = +yearValue;\n return date;\n}\nfunction setJalaliMonth(date, month) {\n month = +month;\n date.year = date.year + Math.floor((month - 1) / 12);\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\n return date;\n}\nfunction setJalaliDay(date, day) {\n let mDays = getDaysPerMonth(date.month, date.year);\n if (day <= 0) {\n while (day <= 0) {\n date = setJalaliMonth(date, date.month - 1);\n mDays = getDaysPerMonth(date.month, date.year);\n day += mDays;\n }\n }\n else if (day > mDays) {\n while (day > mDays) {\n day -= mDays;\n date = setJalaliMonth(date, date.month + 1);\n mDays = getDaysPerMonth(date.month, date.year);\n }\n }\n date.day = day;\n return date;\n}\nfunction mod(a, b) {\n return a - b * Math.floor(a / b);\n}\nfunction div(a, b) {\n return Math.trunc(a / b);\n}\n/*\n This function determines if the Jalali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalali year (jalaliYear).\n @param jalaliYear Jalali calendar year (-61 to 3177)\n @return\n leap: number of years since the last leap year (0 to 4)\n gYear: Gregorian year of the beginning of Jalali year\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\nfunction jalCal(jalaliYear) {\n // Jalali years starting the 33-year rule.\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\n const breaksLength = breaks.length;\n const gYear = jalaliYear + 621;\n let leapJ = -14;\n let jp = breaks[0];\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\n throw new Error('Invalid Jalali year ' + jalaliYear);\n }\n // Find the limiting years for the Jalali year jalaliYear.\n let jump;\n for (let i = 1; i < breaksLength; i += 1) {\n const jm = breaks[i];\n jump = jm - jp;\n if (jalaliYear < jm) {\n break;\n }\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n jp = jm;\n }\n let n = jalaliYear - jp;\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n if (mod(jump, 33) === 4 && jump - n === 4) {\n leapJ += 1;\n }\n // And the same in the Gregorian calendar (until the year gYear).\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\n // Determine the Gregorian date of Farvardin the 1st.\n const march = 20 + leapJ - leapG;\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) {\n n = n - jump + div(jump + 4, 33) * 33;\n }\n let leap = mod(mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n return { leap: leap, gy: gYear, march: march };\n}\n/*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\n gMonth: Calendar month (1 to 12)\n gDay: Calendar day of the month M (1 to 28/29/30/31)\n */\nfunction julianToGregorian(julianDayNumber) {\n let j = 4 * julianDayNumber + 139361631;\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\n const i = div(mod(j, 1461), 4) * 5 + 308;\n const gDay = div(mod(i, 153), 5) + 1;\n const gMonth = mod(div(i, 153), 12) + 1;\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\n return new Date(gYear, gMonth - 1, gDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jy Jalali year (1 to 3100)\n @param jm Jalali month (1 to 12)\n @param jd Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction gregorianToJulian(gy, gm, gd) {\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod(gm + 9, 12) + 2, 5) + gd - 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n}\n/*\n Converts the Julian Day number to a date in the Jalali calendar.\n @param julianDayNumber Julian Day number\n @return\n jalaliYear: Jalali year (1 to 3100)\n jalaliMonth: Jalali month (1 to 12)\n jalaliDay: Jalali day (1 to 29/31)\n */\nfunction julianToJalali(julianDayNumber) {\n let gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\n , jalaliYear = gy - 621, r = jalCal(jalaliYear), gregorianDay = gregorianToJulian(gy, 3, r.march), jalaliDay, jalaliMonth, numberOfDays;\n // Find number of days that passed since 1 Farvardin.\n numberOfDays = julianDayNumber - gregorianDay;\n if (numberOfDays >= 0) {\n if (numberOfDays <= 185) {\n // The first 6 months.\n jalaliMonth = 1 + div(numberOfDays, 31);\n jalaliDay = mod(numberOfDays, 31) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n }\n else {\n // The remaining months.\n numberOfDays -= 186;\n }\n }\n else {\n // Previous Jalali year.\n jalaliYear -= 1;\n numberOfDays += 179;\n if (r.leap === 1) {\n numberOfDays += 1;\n }\n }\n jalaliMonth = 7 + div(numberOfDays, 30);\n jalaliDay = mod(numberOfDays, 30) + 1;\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\n}\n/*\n Converts a date of the Jalali calendar to the Julian Day number.\n @param jYear Jalali year (1 to 3100)\n @param jMonth Jalali month (1 to 12)\n @param jDay Jalali day (1 to 29/31)\n @return Julian Day number\n */\nfunction jalaliToJulian(jYear, jMonth, jDay) {\n let r = jalCal(jYear);\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\n}\n/**\n * Returns the number of days in a specific jalali month.\n */\nfunction getDaysPerMonth(month, year) {\n if (month <= 6) {\n return 31;\n }\n if (month <= 11) {\n return 30;\n }\n if (jalCal(year).leap === 0) {\n return 30;\n }\n return 29;\n}\n\nclass NgbCalendarPersian extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\n getWeeksPerMonth() { return 6; }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date = setJalaliYear(date, date.year + number);\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setJalaliMonth(date, date.month + number);\n date.day = 1;\n return date;\n case 'd':\n return setJalaliDay(date, date.day + number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = toGregorian$2(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n const date = week[thursdayIndex];\n const jsDate = toGregorian$2(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n const startDate = toGregorian$2(new NgbDate(date.year, 1, 1));\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\n }\n getToday() { return fromGregorian$2(new Date()); }\n isValid(date) {\n return date != null && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\n !isNaN(toGregorian$2(date).getTime());\n }\n}\nNgbCalendarPersian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarPersian_BaseFactory; return function NgbCalendarPersian_Factory(t) { return (ɵNgbCalendarPersian_BaseFactory || (ɵNgbCalendarPersian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarPersian)))(t || NgbCalendarPersian); }; }();\nNgbCalendarPersian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarPersian, factory: NgbCalendarPersian.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarPersian, [{\n type: Injectable\n }], null, null); })();\n\nconst PARTS_PER_HOUR = 1080;\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\nconst GREGORIAN_EPOCH = 1721425.5;\nfunction isGregorianLeapYear(year) {\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n}\nfunction numberOfFirstDayInYear(year) {\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\n let dayOfWeek = dayNumber % 7; // 0 == Monday\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\n dayNumber++;\n dayOfWeek = dayNumber % 7;\n }\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\n dayNumber += 2;\n }\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\n dayNumber++;\n }\n return dayNumber;\n}\nfunction getDaysInGregorianMonth(month, year) {\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n if (isGregorianLeapYear(year)) {\n days[1]++;\n }\n return days[month - 1];\n}\nfunction getHebrewMonths(year) {\n return isHebrewLeapYear(year) ? 13 : 12;\n}\n/**\n * Returns the number of days in a specific Hebrew year.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewYear(year) {\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n}\nfunction isHebrewLeapYear(year) {\n if (year != null) {\n let b = (year * 12 + 17) % 19;\n return b >= ((b < 0) ? -7 : 12);\n }\n return false;\n}\n/**\n * Returns the number of days in a specific Hebrew month.\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\n * `year` is any Hebrew year.\n */\nfunction getDaysInHebrewMonth(month, year) {\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\n let yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\n let leapYear = isHebrewLeapYear(year);\n let daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\n if (yearType > 0) {\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\n }\n if (yearType > 1) {\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\n }\n return daysInMonth[month - 1];\n}\nfunction getDayNumberInHebrewYear(date) {\n let numberOfDay = 0;\n for (let i = 1; i < date.month; i++) {\n numberOfDay += getDaysInHebrewMonth(i, date.year);\n }\n return numberOfDay + date.day;\n}\nfunction setHebrewMonth(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getHebrewMonths(date.year) - date.month) {\n val -= getHebrewMonths(date.year) - date.month + 1;\n date.year++;\n date.month = 1;\n }\n else {\n date.month += val;\n val = 0;\n }\n }\n else {\n if (val >= date.month) {\n date.year--;\n val -= date.month;\n date.month = getHebrewMonths(date.year);\n }\n else {\n date.month -= val;\n val = 0;\n }\n }\n }\n return date;\n}\nfunction setHebrewDay(date, val) {\n let after = val >= 0;\n if (!after) {\n val = -val;\n }\n while (val > 0) {\n if (after) {\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\n date.year++;\n date.month = 1;\n date.day = 1;\n }\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\n date.month++;\n date.day = 1;\n }\n else {\n date.day += val;\n val = 0;\n }\n }\n else {\n if (val >= date.day) {\n val -= date.day;\n date.month--;\n if (date.month === 0) {\n date.year--;\n date.month = getHebrewMonths(date.year);\n }\n date.day = getDaysInHebrewMonth(date.month, date.year);\n }\n else {\n date.day -= val;\n val = 0;\n }\n }\n }\n return date;\n}\n/**\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Hebrew date.\n */\nfunction fromGregorian$1(gdate) {\n const date = new Date(gdate);\n const gYear = date.getFullYear(), gMonth = date.getMonth(), gDay = date.getDate();\n let julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gYear) ? -1 : -2) + gDay);\n julianDay = Math.floor(julianDay + 0.5);\n let daysSinceHebEpoch = julianDay - 347997;\n let monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n while (dayOfYear < 1) {\n hYear--;\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\n }\n let hMonth = 1;\n let hDay = dayOfYear;\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\n hMonth++;\n }\n return new NgbDate(hYear, hMonth, hDay);\n}\n/**\n * Returns the equivalent JS date value for a given Hebrew date.\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\n */\nfunction toGregorian$1(hebrewDate) {\n const hYear = hebrewDate.year;\n const hMonth = hebrewDate.month;\n const hDay = hebrewDate.day;\n let days = numberOfFirstDayInYear(hYear);\n for (let i = 1; i < hMonth; i++) {\n days += getDaysInHebrewMonth(i, hYear);\n }\n days += hDay;\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\n let after = diffDays >= 0;\n if (!after) {\n diffDays = -diffDays;\n }\n let gYear = 1970;\n let gMonth = 1;\n let gDay = 1;\n while (diffDays > 0) {\n if (after) {\n if (diffDays >= (isGregorianLeapYear(gYear) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear) ? 366 : 365;\n gYear++;\n }\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n gMonth++;\n }\n else {\n gDay += diffDays;\n diffDays = 0;\n }\n }\n else {\n if (diffDays >= (isGregorianLeapYear(gYear - 1) ? 366 : 365)) {\n diffDays -= isGregorianLeapYear(gYear - 1) ? 366 : 365;\n gYear--;\n }\n else {\n if (gMonth > 1) {\n gMonth--;\n }\n else {\n gMonth = 12;\n gYear--;\n }\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\n }\n else {\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\n diffDays = 0;\n }\n }\n }\n }\n return new Date(gYear, gMonth - 1, gDay);\n}\nfunction hebrewNumerals(numerals) {\n if (!numerals) {\n return '';\n }\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\n const hArray10_19 = [\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\n ];\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\n const hArray100_900 = [\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\n '\\u05ea\\u05ea\\u05e7'\n ];\n const hArray1000_9000 = [\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\n ];\n const geresh = '\\u05f3', gershaim = '\\u05f4';\n let mem = 0;\n let result = [];\n let step = 0;\n while (numerals > 0) {\n let m = numerals % 10;\n if (step === 0) {\n mem = m;\n }\n else if (step === 1) {\n if (m !== 1) {\n result.unshift(hArray20_90[m], hArray0_9[mem]);\n }\n else {\n result.unshift(hArray10_19[mem]);\n }\n }\n else if (step === 2) {\n result.unshift(hArray100_900[m]);\n }\n else {\n if (m !== 5) {\n result.unshift(hArray1000_9000[m], geresh, ' ');\n }\n break;\n }\n numerals = Math.floor(numerals / 10);\n if (step === 0 && numerals === 0) {\n result.unshift(hArray0_9[m]);\n }\n step++;\n }\n result = result.join('').split('');\n if (result.length === 1) {\n result.push(geresh);\n }\n else if (result.length > 1) {\n result.splice(result.length - 1, 0, gershaim);\n }\n return result.join('');\n}\n\n/**\n * @since 3.2.0\n */\nclass NgbCalendarHebrew extends NgbCalendar {\n getDaysPerWeek() { return 7; }\n getMonths(year) {\n if (year && isHebrewLeapYear(year)) {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\n }\n else {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\n }\n }\n getWeeksPerMonth() { return 6; }\n isValid(date) {\n if (date != null) {\n let b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\n return b && !isNaN(toGregorian$1(date).getTime());\n }\n return false;\n }\n getNext(date, period = 'd', number = 1) {\n date = new NgbDate(date.year, date.month, date.day);\n switch (period) {\n case 'y':\n date.year += number;\n date.month = 1;\n date.day = 1;\n return date;\n case 'm':\n date = setHebrewMonth(date, number);\n date.day = 1;\n return date;\n case 'd':\n return setHebrewDay(date, number);\n default:\n return date;\n }\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n const day = toGregorian$1(date).getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n const date = week[week.length - 1];\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\n }\n getToday() { return fromGregorian$1(new Date()); }\n /**\n * @since 3.4.0\n */\n toGregorian(date) { return fromJSDate(toGregorian$1(date)); }\n /**\n * @since 3.4.0\n */\n fromGregorian(date) { return fromGregorian$1(toJSDate(date)); }\n}\nNgbCalendarHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHebrew_BaseFactory; return function NgbCalendarHebrew_Factory(t) { return (ɵNgbCalendarHebrew_BaseFactory || (ɵNgbCalendarHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHebrew)))(t || NgbCalendarHebrew); }; }();\nNgbCalendarHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHebrew, factory: NgbCalendarHebrew.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHebrew, [{\n type: Injectable\n }], null, null); })();\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\nconst MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\n/**\n * @since 3.2.0\n */\nclass NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\n getMonthShortName(month, year) { return this.getMonthFullName(month, year); }\n getMonthFullName(month, year) {\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\n }\n getWeekdayLabel(weekday, width) { return WEEKDAYS[weekday - 1] || ''; }\n getDayAriaLabel(date) {\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\n }\n getDayNumerals(date) { return hebrewNumerals(date.day); }\n getWeekNumerals(weekNumber) { return hebrewNumerals(weekNumber); }\n getYearNumerals(year) { return hebrewNumerals(year); }\n}\nNgbDatepickerI18nHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbDatepickerI18nHebrew_BaseFactory; return function NgbDatepickerI18nHebrew_Factory(t) { return (ɵNgbDatepickerI18nHebrew_BaseFactory || (ɵNgbDatepickerI18nHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew)))(t || NgbDatepickerI18nHebrew); }; }();\nNgbDatepickerI18nHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nHebrew, factory: NgbDatepickerI18nHebrew.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nHebrew, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * Returns the equivalent JS date value for a give input Buddhist date.\n * `date` is an Buddhist date to be converted to Gregorian.\n */\nfunction toGregorian(date) {\n return new Date(date.year - 543, date.month - 1, date.day);\n}\n/**\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\n * `gdate` is a JS Date to be converted to Buddhist.\n * utc to local\n */\nfunction fromGregorian(gdate) {\n return new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\n}\n\n/**\n * @since 9.1.0\n */\nclass NgbCalendarBuddhist extends NgbCalendarGregorian {\n getToday() { return fromGregorian(new Date()); }\n getNext(date, period = 'd', number = 1) {\n let jsDate = toGregorian(date);\n let checkMonth = true;\n let expectedMonth = jsDate.getMonth();\n switch (period) {\n case 'y':\n jsDate.setFullYear(jsDate.getFullYear() + number);\n break;\n case 'm':\n expectedMonth += number;\n jsDate.setMonth(expectedMonth);\n expectedMonth = expectedMonth % 12;\n if (expectedMonth < 0) {\n expectedMonth = expectedMonth + 12;\n }\n break;\n case 'd':\n jsDate.setDate(jsDate.getDate() + number);\n checkMonth = false;\n break;\n default:\n return date;\n }\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\n // this means the destination month has less days than the initial month\n // let's go back to the end of the previous month:\n jsDate.setDate(0);\n }\n return fromGregorian(jsDate);\n }\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\n getWeekday(date) {\n let jsDate = toGregorian(date);\n let day = jsDate.getDay();\n // in JS Date Sun=0, in ISO 8601 Sun=7\n return day === 0 ? 7 : day;\n }\n getWeekNumber(week, firstDayOfWeek) {\n // in JS Date Sun=0, in ISO 8601 Sun=7\n if (firstDayOfWeek === 7) {\n firstDayOfWeek = 0;\n }\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\n let date = week[thursdayIndex];\n const jsDate = toGregorian(date);\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\n const time = jsDate.getTime();\n jsDate.setMonth(0); // Compare with Jan 1\n jsDate.setDate(1);\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\n }\n isValid(date) {\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\n return false;\n }\n // year 0 doesn't exist in Gregorian calendar\n if (date.year === 0) {\n return false;\n }\n const jsDate = toGregorian(date);\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year - 543 &&\n jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\n }\n}\nNgbCalendarBuddhist.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarBuddhist_BaseFactory; return function NgbCalendarBuddhist_Factory(t) { return (ɵNgbCalendarBuddhist_BaseFactory || (ɵNgbCalendarBuddhist_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarBuddhist)))(t || NgbCalendarBuddhist); }; }();\nNgbCalendarBuddhist.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarBuddhist, factory: NgbCalendarBuddhist.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarBuddhist, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\n * native javascript dates as a user date model.\n */\nclass NgbDateNativeAdapter extends NgbDateAdapter {\n /**\n * Converts a native `Date` to a `NgbDateStruct`.\n */\n fromModel(date) {\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\n }\n /**\n * Converts a `NgbDateStruct` to a native `Date`.\n */\n toModel(date) {\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\n null;\n }\n _fromNativeDate(date) {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\n // avoid 30 -> 1930 conversion\n jsDate.setFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeAdapter_BaseFactory; return function NgbDateNativeAdapter_Factory(t) { return (ɵNgbDateNativeAdapter_BaseFactory || (ɵNgbDateNativeAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeAdapter)))(t || NgbDateNativeAdapter); }; }();\nNgbDateNativeAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeAdapter, factory: NgbDateNativeAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\n *\n * @since 3.2.0\n */\nclass NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\n _fromNativeDate(date) {\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\n }\n _toNativeDate(date) {\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\n // avoid 30 -> 1930 conversion\n jsDate.setUTCFullYear(date.year);\n return jsDate;\n }\n}\nNgbDateNativeUTCAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeUTCAdapter_BaseFactory; return function NgbDateNativeUTCAdapter_Factory(t) { return (ɵNgbDateNativeUTCAdapter_BaseFactory || (ɵNgbDateNativeUTCAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter)))(t || NgbDateNativeUTCAdapter); }; }();\nNgbDateNativeUTCAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeUTCAdapter, factory: NgbDateNativeUTCAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeUTCAdapter, [{\n type: Injectable\n }], null, null); })();\n\nclass NgbDatepickerModule {\n}\nNgbDatepickerModule.ɵfac = function NgbDatepickerModule_Factory(t) { return new (t || NgbDatepickerModule)(); };\nNgbDatepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDatepickerModule });\nNgbDatepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect,\n NgbDatepickerDayView, NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth],\n imports: [CommonModule, FormsModule],\n entryComponents: [NgbDatepicker]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDatepickerModule, { declarations: function () { return [NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView, NgbInputDatepicker]; }, imports: function () { return [CommonModule, FormsModule]; }, exports: function () { return [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth]; } }); })();\n\n/**\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the dropdowns used in the application.\n */\nclass NgbDropdownConfig {\n constructor() {\n this.autoClose = true;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n}\nNgbDropdownConfig.ɵfac = function NgbDropdownConfig_Factory(t) { return new (t || NgbDropdownConfig)(); };\nNgbDropdownConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nclass NgbNavbar {\n}\nNgbNavbar.ɵfac = function NgbNavbar_Factory(t) { return new (t || NgbNavbar)(); };\nNgbNavbar.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavbar, selectors: [[\"\", 8, \"navbar\"]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavbar, [{\n type: Directive,\n args: [{ selector: '.navbar' }]\n }], null, null); })();\n/**\n * A directive you should put on a dropdown item to enable keyboard navigation.\n * Arrow keys will move focus between items marked with this directive.\n *\n * @since 4.1.0\n */\nclass NgbDropdownItem {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this._disabled = false;\n }\n set disabled(value) {\n this._disabled = value === '' || value === true; // accept an empty attribute as true\n }\n get disabled() { return this._disabled; }\n}\nNgbDropdownItem.ɵfac = function NgbDropdownItem_Factory(t) { return new (t || NgbDropdownItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownItem, selectors: [[\"\", \"ngbDropdownItem\", \"\"]], hostAttrs: [1, \"dropdown-item\"], hostVars: 2, hostBindings: function NgbDropdownItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\" } });\nNgbDropdownItem.ctorParameters = () => [\n { type: ElementRef }\n];\nNgbDropdownItem.propDecorators = {\n disabled: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownItem, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }] }); })();\n/**\n * A directive that wraps dropdown menu content and dropdown items.\n */\nclass NgbDropdownMenu {\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this.placement = 'bottom';\n this.isOpen = false;\n this.nativeElement = _elementRef.nativeElement;\n }\n}\nNgbDropdownMenu.ɵfac = function NgbDropdownMenu_Factory(t) { return new (t || NgbDropdownMenu)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownMenu.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownMenu, selectors: [[\"\", \"ngbDropdownMenu\", \"\"]], contentQueries: function NgbDropdownMenu_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownItem, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.menuItems = _t);\n } }, hostVars: 5, hostBindings: function NgbDropdownMenu_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.ArrowUp\", function NgbDropdownMenu_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownMenu_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownMenu_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownMenu_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Enter\", function NgbDropdownMenu_keydown_Enter_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Space\", function NgbDropdownMenu_keydown_Space_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Tab\", function NgbDropdownMenu_keydown_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Shift.Tab\", function NgbDropdownMenu_keydown_Shift_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"x-placement\", ctx.placement);\n ɵngcc0.ɵɵclassProp(\"dropdown-menu\", true)(\"show\", ctx.dropdown.isOpen());\n } } });\nNgbDropdownMenu.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\n { type: ElementRef }\n];\nNgbDropdownMenu.propDecorators = {\n menuItems: [{ type: ContentChildren, args: [NgbDropdownItem,] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownMenu, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '[attr.x-placement]': 'placement',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, { menuItems: [{\n type: ContentChildren,\n args: [NgbDropdownItem]\n }] }); })();\n/**\n * A directive to mark an element to which dropdown menu will be anchored.\n *\n * This is a simple version of the `NgbDropdownToggle` directive.\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\n * for events other than click.\n *\n * @since 1.1.0\n */\nclass NgbDropdownAnchor {\n constructor(dropdown, _elementRef) {\n this.dropdown = dropdown;\n this.nativeElement = _elementRef.nativeElement;\n }\n}\nNgbDropdownAnchor.ɵfac = function NgbDropdownAnchor_Factory(t) { return new (t || NgbDropdownAnchor)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownAnchor.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownAnchor, selectors: [[\"\", \"ngbDropdownAnchor\", \"\"]], hostAttrs: [1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownAnchor_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } } });\nNgbDropdownAnchor.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownAnchor, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownAnchor]', host: { 'class': 'dropdown-toggle', '[attr.aria-expanded]': 'dropdown.isOpen()' } }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * A directive to mark an element that will toggle dropdown via the `click` event.\n *\n * You can also use `NgbDropdownAnchor` as an alternative.\n */\nclass NgbDropdownToggle extends NgbDropdownAnchor {\n constructor(dropdown, elementRef) {\n super(dropdown, elementRef);\n }\n}\nNgbDropdownToggle.ɵfac = function NgbDropdownToggle_Factory(t) { return new (t || NgbDropdownToggle)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownToggle, selectors: [[\"\", \"ngbDropdownToggle\", \"\"]], hostAttrs: [1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbDropdownToggle_click_HostBindingHandler() { return ctx.dropdown.toggle(); })(\"keydown.ArrowUp\", function NgbDropdownToggle_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownToggle_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownToggle_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownToggle_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Tab\", function NgbDropdownToggle_keydown_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Shift.Tab\", function NgbDropdownToggle_keydown_Shift_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\nNgbDropdownToggle.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownToggle, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\n/**\n * A directive that provides contextual overlays for displaying lists of links and more.\n */\nclass NgbDropdown {\n constructor(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\n this._changeDetector = _changeDetector;\n this._document = _document;\n this._ngZone = _ngZone;\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._closed$ = new Subject();\n this._bodyContainer = null;\n /**\n * Defines whether or not the dropdown menu is opened initially.\n */\n this._open = false;\n /**\n * An event fired when the dropdown is opened or closed.\n *\n * The event payload is a `boolean`:\n * * `true` - the dropdown was opened\n * * `false` - the dropdown was closed\n */\n this.openChange = new EventEmitter();\n this.placement = config.placement;\n this.container = config.container;\n this.autoClose = config.autoClose;\n this.display = ngbNavbar ? 'static' : 'dynamic';\n this._zoneSubscription = _ngZone.onStable.subscribe(() => { this._positionMenu(); });\n }\n ngAfterContentInit() {\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\n this._applyPlacementClasses();\n if (this._open) {\n this._setCloseHandlers();\n }\n });\n }\n ngOnChanges(changes) {\n if (changes.container && this._open) {\n this._applyContainer(this.container);\n }\n if (changes.placement && !changes.placement.isFirstChange) {\n this._applyPlacementClasses();\n }\n if (changes.dropdownClass) {\n const { currentValue, previousValue } = changes.dropdownClass;\n this._applyCustomDropdownClass(currentValue, previousValue);\n }\n }\n /**\n * Checks if the dropdown menu is open.\n */\n isOpen() { return this._open; }\n /**\n * Opens the dropdown menu.\n */\n open() {\n if (!this._open) {\n this._open = true;\n this._applyContainer(this.container);\n this.openChange.emit(true);\n this._setCloseHandlers();\n if (this._anchor) {\n this._anchor.nativeElement.focus();\n }\n }\n }\n _setCloseHandlers() {\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (source) => {\n this.close();\n if (source === 0 /* ESCAPE */) {\n this._anchor.nativeElement.focus();\n }\n }, this._closed$, this._menu ? [this._menu.nativeElement] : [], this._anchor ? [this._anchor.nativeElement] : [], '.dropdown-item,.dropdown-divider');\n }\n /**\n * Closes the dropdown menu.\n */\n close() {\n if (this._open) {\n this._open = false;\n this._resetContainer();\n this._closed$.next();\n this.openChange.emit(false);\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Toggles the dropdown menu.\n */\n toggle() {\n if (this.isOpen()) {\n this.close();\n }\n else {\n this.open();\n }\n }\n ngOnDestroy() {\n this._resetContainer();\n this._closed$.next();\n this._zoneSubscription.unsubscribe();\n }\n onKeyDown(event) {\n // tslint:disable-next-line:deprecation\n const key = event.which;\n const itemElements = this._getMenuElements();\n let position = -1;\n let itemElement = null;\n const isEventFromToggle = this._isEventFromToggle(event);\n if (!isEventFromToggle && itemElements.length) {\n itemElements.forEach((item, index) => {\n if (item.contains(event.target)) {\n itemElement = item;\n }\n if (item === this._document.activeElement) {\n position = index;\n }\n });\n }\n // closing on Enter / Space\n if (key === Key.Space || key === Key.Enter) {\n if (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\n // So we have to register a one-time click handler that will fire after any user defined click handlers\n // to close the dropdown\n fromEvent(itemElement, 'click').pipe(take(1)).subscribe(() => this.close());\n }\n return;\n }\n if (key === Key.Tab) {\n if (event.target && this.isOpen() && this.autoClose) {\n if (this._anchor.nativeElement === event.target) {\n if (this.container === 'body' && !event.shiftKey) {\n /* This case is special: user is using [Tab] from the anchor/toggle.\n User expects the next focusable element in the dropdown menu to get focus.\n But the menu is not a sibling to anchor/toggle, it is at the end of the body.\n Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\n so that browser will focus the proper element (first one focusable in the menu) */\n this._renderer.setAttribute(this._menu.nativeElement, 'tabindex', '0');\n this._menu.nativeElement.focus();\n this._renderer.removeAttribute(this._menu.nativeElement, 'tabindex');\n }\n else if (event.shiftKey) {\n this.close();\n }\n return;\n }\n else if (this.container === 'body') {\n const focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\n if (event.shiftKey && event.target === focusableElements[0]) {\n this._anchor.nativeElement.focus();\n event.preventDefault();\n }\n else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\n this._anchor.nativeElement.focus();\n this.close();\n }\n }\n else {\n fromEvent(event.target, 'focusout').pipe(take(1)).subscribe(({ relatedTarget }) => {\n if (!this._elementRef.nativeElement.contains(relatedTarget)) {\n this.close();\n }\n });\n }\n }\n return;\n }\n // opening / navigating\n if (isEventFromToggle || itemElement) {\n this.open();\n if (itemElements.length) {\n switch (key) {\n case Key.ArrowDown:\n position = Math.min(position + 1, itemElements.length - 1);\n break;\n case Key.ArrowUp:\n if (this._isDropup() && position === -1) {\n position = itemElements.length - 1;\n break;\n }\n position = Math.max(position - 1, 0);\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = itemElements.length - 1;\n break;\n }\n itemElements[position].focus();\n }\n event.preventDefault();\n }\n }\n _isDropup() { return this._elementRef.nativeElement.classList.contains('dropup'); }\n _isEventFromToggle(event) {\n return this._anchor.nativeElement.contains(event.target);\n }\n _getMenuElements() {\n const menu = this._menu;\n if (menu == null) {\n return [];\n }\n return menu.menuItems.filter(item => !item.disabled).map(item => item.elementRef.nativeElement);\n }\n _positionMenu() {\n const menu = this._menu;\n if (this.isOpen() && menu) {\n this._applyPlacementClasses(this.display === 'dynamic' ? positionElements(this._anchor.nativeElement, this._bodyContainer || this._menu.nativeElement, this.placement, this.container === 'body') :\n this._getFirstPlacement(this.placement));\n }\n }\n _getFirstPlacement(placement) {\n return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\n }\n _resetContainer() {\n const renderer = this._renderer;\n if (this._menu) {\n const dropdownElement = this._elementRef.nativeElement;\n const dropdownMenuElement = this._menu.nativeElement;\n renderer.appendChild(dropdownElement, dropdownMenuElement);\n renderer.removeStyle(dropdownMenuElement, 'position');\n renderer.removeStyle(dropdownMenuElement, 'transform');\n }\n if (this._bodyContainer) {\n renderer.removeChild(this._document.body, this._bodyContainer);\n this._bodyContainer = null;\n }\n }\n _applyContainer(container = null) {\n this._resetContainer();\n if (container === 'body') {\n const renderer = this._renderer;\n const dropdownMenuElement = this._menu.nativeElement;\n const bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\n // Override some styles to have the positioning working\n renderer.setStyle(bodyContainer, 'position', 'absolute');\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\n renderer.setStyle(bodyContainer, 'z-index', '1050');\n renderer.appendChild(bodyContainer, dropdownMenuElement);\n renderer.appendChild(this._document.body, bodyContainer);\n }\n this._applyCustomDropdownClass(this.dropdownClass);\n }\n _applyCustomDropdownClass(newClass, oldClass) {\n const targetElement = this.container === 'body' ? this._bodyContainer : this._elementRef.nativeElement;\n if (targetElement) {\n if (oldClass) {\n this._renderer.removeClass(targetElement, oldClass);\n }\n if (newClass) {\n this._renderer.addClass(targetElement, newClass);\n }\n }\n }\n _applyPlacementClasses(placement) {\n const menu = this._menu;\n if (menu) {\n if (!placement) {\n placement = this._getFirstPlacement(this.placement);\n }\n const renderer = this._renderer;\n const dropdownElement = this._elementRef.nativeElement;\n // remove the current placement classes\n renderer.removeClass(dropdownElement, 'dropup');\n renderer.removeClass(dropdownElement, 'dropdown');\n menu.placement = this.display === 'static' ? null : placement;\n /*\n * apply the new placement\n * in case of top use up-arrow or down-arrow otherwise\n */\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\n renderer.addClass(dropdownElement, dropdownClass);\n const bodyContainer = this._bodyContainer;\n if (bodyContainer) {\n renderer.removeClass(bodyContainer, 'dropup');\n renderer.removeClass(bodyContainer, 'dropdown');\n renderer.addClass(bodyContainer, dropdownClass);\n }\n }\n }\n}\nNgbDropdown.ɵfac = function NgbDropdown_Factory(t) { return new (t || NgbDropdown)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbDropdownConfig), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(NgbNavbar, 8)); };\nNgbDropdown.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdown, selectors: [[\"\", \"ngbDropdown\", \"\"]], contentQueries: function NgbDropdown_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownAnchor, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menu = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._anchor = _t.first);\n } }, hostVars: 2, hostBindings: function NgbDropdown_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"show\", ctx.isOpen());\n } }, inputs: { _open: [\"open\", \"_open\"], placement: \"placement\", container: \"container\", autoClose: \"autoClose\", display: \"display\", dropdownClass: \"dropdownClass\" }, outputs: { openChange: \"openChange\" }, exportAs: [\"ngbDropdown\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbDropdown.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: NgbDropdownConfig },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ElementRef },\n { type: Renderer2 },\n { type: NgbNavbar, decorators: [{ type: Optional }] }\n];\nNgbDropdown.propDecorators = {\n _menu: [{ type: ContentChild, args: [NgbDropdownMenu, { static: false },] }],\n _anchor: [{ type: ContentChild, args: [NgbDropdownAnchor, { static: false },] }],\n autoClose: [{ type: Input }],\n dropdownClass: [{ type: Input }],\n _open: [{ type: Input, args: ['open',] }],\n placement: [{ type: Input }],\n container: [{ type: Input }],\n display: [{ type: Input }],\n openChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdown, [{\n type: Directive,\n args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: NgbDropdownConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: NgbNavbar, decorators: [{\n type: Optional\n }] }]; }, { _open: [{\n type: Input,\n args: ['open']\n }], openChange: [{\n type: Output\n }], placement: [{\n type: Input\n }], container: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], display: [{\n type: Input\n }], _menu: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { static: false }]\n }], _anchor: [{\n type: ContentChild,\n args: [NgbDropdownAnchor, { static: false }]\n }], dropdownClass: [{\n type: Input\n }] }); })();\n\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\nclass NgbDropdownModule {\n}\nNgbDropdownModule.ɵfac = function NgbDropdownModule_Factory(t) { return new (t || NgbDropdownModule)(); };\nNgbDropdownModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDropdownModule });\nNgbDropdownModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownModule, [{\n type: NgModule,\n args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDropdownModule, { declarations: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar], exports: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar] }); })();\n\n/**\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all modals used in the application.\n*\n* @since 3.1.0\n*/\nclass NgbModalConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.backdrop = true;\n this.keyboard = true;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbModalConfig.ɵfac = function NgbModalConfig_Factory(t) { return new (t || NgbModalConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbModalConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbModalConfig, providedIn: \"root\" });\nNgbModalConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nclass ContentRef {\n constructor(nodes, viewRef, componentRef) {\n this.nodes = nodes;\n this.viewRef = viewRef;\n this.componentRef = componentRef;\n }\n}\nclass PopupService {\n constructor(_type, _injector, _viewContainerRef, _renderer, _ngZone, _componentFactoryResolver, _applicationRef) {\n this._type = _type;\n this._injector = _injector;\n this._viewContainerRef = _viewContainerRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._componentFactoryResolver = _componentFactoryResolver;\n this._applicationRef = _applicationRef;\n this._windowRef = null;\n this._contentRef = null;\n }\n open(content, context, animation = false) {\n if (!this._windowRef) {\n this._contentRef = this._getContentRef(content, context);\n this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), this._viewContainerRef.length, this._injector, this._contentRef.nodes);\n }\n const { nativeElement } = this._windowRef.location;\n const transition$ = this._ngZone.onStable.pipe(take(1), mergeMap(() => ngbRunTransition(this._ngZone, nativeElement, ({ classList }) => classList.add('show'), { animation, runningTransition: 'continue' })));\n return { windowRef: this._windowRef, transition$ };\n }\n close(animation = false) {\n if (!this._windowRef) {\n return of(undefined);\n }\n return ngbRunTransition(this._ngZone, this._windowRef.location.nativeElement, ({ classList }) => classList.remove('show'), { animation, runningTransition: 'stop' })\n .pipe(tap(() => {\n var _a;\n if (this._windowRef) {\n // this is required because of the container='body' option\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\n this._windowRef = null;\n }\n if ((_a = this._contentRef) === null || _a === void 0 ? void 0 : _a.viewRef) {\n this._applicationRef.detachView(this._contentRef.viewRef);\n this._contentRef.viewRef.destroy();\n this._contentRef = null;\n }\n }));\n }\n _getContentRef(content, context) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n else {\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\n }\n }\n}\n\nconst noop = () => { };\nconst ɵ0$2 = noop;\n/**\n * Utility to handle the scrollbar.\n *\n * It allows to compensate the lack of a vertical scrollbar by adding an\n * equivalent padding on the right of the body, and to remove this compensation.\n */\nclass ScrollBar {\n constructor(_document) {\n this._document = _document;\n }\n /**\n * To be called right before a potential vertical scrollbar would be removed:\n *\n * - if there was a scrollbar, adds some compensation padding to the body\n * to keep the same layout as when the scrollbar is there\n * - if there was none, there is nothing to do\n *\n * @return a callback used to revert the compensation (noop if there was none,\n * otherwise a function removing the padding)\n */\n compensate() {\n const width = this._getWidth();\n return !this._isPresent(width) ? noop : this._adjustBody(width);\n }\n /**\n * Adds a padding of the given width on the right of the body.\n *\n * @return a callback used to revert the padding to its previous value\n */\n _adjustBody(scrollbarWidth) {\n const body = this._document.body;\n const userSetPaddingStyle = body.style.paddingRight;\n const actualPadding = parseFloat(window.getComputedStyle(body)['padding-right']);\n body.style['padding-right'] = `${actualPadding + scrollbarWidth}px`;\n return () => body.style['padding-right'] = userSetPaddingStyle;\n }\n /**\n * Tells whether a scrollbar is currently present on the body.\n *\n * @return true if scrollbar is present, false otherwise\n */\n _isPresent(scrollbarWidth) {\n const rect = this._document.body.getBoundingClientRect();\n const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\n const uncertainty = 0.1 * scrollbarWidth;\n return bodyToViewportGap >= scrollbarWidth - uncertainty;\n }\n /**\n * Calculates and returns the width of a scrollbar.\n *\n * @return the width of a scrollbar on this page\n */\n _getWidth() {\n const measurer = this._document.createElement('div');\n measurer.className = 'modal-scrollbar-measure';\n const body = this._document.body;\n body.appendChild(measurer);\n const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\n body.removeChild(measurer);\n return width;\n }\n}\nScrollBar.ɵfac = function ScrollBar_Factory(t) { return new (t || ScrollBar)(ɵngcc0.ɵɵinject(DOCUMENT)); };\nScrollBar.ɵprov = i0.ɵɵdefineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(i0.ɵɵinject(i1.DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\nScrollBar.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollBar, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\nclass NgbModalBackdrop {\n constructor(_el, _zone) {\n this._el = _el;\n this._zone = _zone;\n }\n ngOnInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n ngbRunTransition(this._zone, this._el.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, { animation: this.animation, runningTransition: 'continue' });\n });\n }\n hide() {\n return ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), { animation: this.animation, runningTransition: 'stop' });\n }\n}\nNgbModalBackdrop.ɵfac = function NgbModalBackdrop_Factory(t) { return new (t || NgbModalBackdrop)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbModalBackdrop.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalBackdrop, selectors: [[\"ngb-modal-backdrop\"]], hostAttrs: [2, \"z-index\", \"1050\"], hostVars: 6, hostBindings: function NgbModalBackdrop_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-backdrop\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"show\", !ctx.animation)(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", backdropClass: \"backdropClass\" }, decls: 0, vars: 0, template: function NgbModalBackdrop_Template(rf, ctx) { }, encapsulation: 2 });\nNgbModalBackdrop.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone }\n];\nNgbModalBackdrop.propDecorators = {\n animation: [{ type: Input }],\n backdropClass: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalBackdrop, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: {\n '[class]': '\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n '[class.show]': '!animation',\n '[class.fade]': 'animation',\n 'style': 'z-index: 1050'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { animation: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }] }); })();\n\n/**\n * A reference to the currently opened (active) modal.\n *\n * Instances of this class can be injected into your component passed as modal content.\n * So you can `.close()` or `.dismiss()` the modal window from your component.\n */\nclass NgbActiveModal {\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbModalRef.result` promise will be resolved with the provided value.\n */\n close(result) { }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) { }\n}\n/**\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\n */\nclass NgbModalRef {\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\n this._windowCmptRef = _windowCmptRef;\n this._contentRef = _contentRef;\n this._backdropCmptRef = _backdropCmptRef;\n this._beforeDismiss = _beforeDismiss;\n this._closed = new Subject();\n this._dismissed = new Subject();\n this._hidden = new Subject();\n _windowCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\n this.result = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n this.result.then(null, () => { });\n }\n /**\n * The instance of a component used for the modal content.\n *\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\n */\n get componentInstance() {\n if (this._contentRef && this._contentRef.componentRef) {\n return this._contentRef.componentRef.instance;\n }\n }\n /**\n * The observable that emits when the modal is closed via the `.close()` method.\n *\n * It will emit the result passed to the `.close()` method.\n *\n * @since 8.0.0\n */\n get closed() { return this._closed.asObservable().pipe(takeUntil(this._hidden)); }\n /**\n * The observable that emits when the modal is dismissed via the `.dismiss()` method.\n *\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\n * reasons like backdrop click or ESC key press.\n *\n * @since 8.0.0\n */\n get dismissed() { return this._dismissed.asObservable().pipe(takeUntil(this._hidden)); }\n /**\n * The observable that emits when both modal window and backdrop are closed and animations were finished.\n * At this point modal and backdrop elements will be removed from the DOM tree.\n *\n * This observable will be completed after emitting.\n *\n * @since 8.0.0\n */\n get hidden() { return this._hidden.asObservable(); }\n /**\n * The observable that emits when modal is fully visible and animation was finished.\n * Modal DOM element is always available synchronously after calling 'modal.open()' service.\n *\n * This observable will be completed after emitting.\n * It will not emit, if modal is closed before open animation is finished.\n *\n * @since 8.0.0\n */\n get shown() { return this._windowCmptRef.instance.shown.asObservable(); }\n /**\n * Closes the modal with an optional `result` value.\n *\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\n */\n close(result) {\n if (this._windowCmptRef) {\n this._closed.next(result);\n this._resolve(result);\n this._removeModalElements();\n }\n }\n _dismiss(reason) {\n this._dismissed.next(reason);\n this._reject(reason);\n this._removeModalElements();\n }\n /**\n * Dismisses the modal with an optional `reason` value.\n *\n * The `NgbModalRef.result` promise will be rejected with the provided value.\n */\n dismiss(reason) {\n if (this._windowCmptRef) {\n if (!this._beforeDismiss) {\n this._dismiss(reason);\n }\n else {\n const dismiss = this._beforeDismiss();\n if (dismiss && dismiss.then) {\n dismiss.then(result => {\n if (result !== false) {\n this._dismiss(reason);\n }\n }, () => { });\n }\n else if (dismiss !== false) {\n this._dismiss(reason);\n }\n }\n }\n }\n _removeModalElements() {\n const windowTransition$ = this._windowCmptRef.instance.hide();\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\n // hiding window\n windowTransition$.subscribe(() => {\n const { nativeElement } = this._windowCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._windowCmptRef.destroy();\n if (this._contentRef && this._contentRef.viewRef) {\n this._contentRef.viewRef.destroy();\n }\n this._windowCmptRef = null;\n this._contentRef = null;\n });\n // hiding backdrop\n backdropTransition$.subscribe(() => {\n if (this._backdropCmptRef) {\n const { nativeElement } = this._backdropCmptRef.location;\n nativeElement.parentNode.removeChild(nativeElement);\n this._backdropCmptRef.destroy();\n this._backdropCmptRef = null;\n }\n });\n // all done\n zip(windowTransition$, backdropTransition$).subscribe(() => {\n this._hidden.next();\n this._hidden.complete();\n });\n }\n}\n\nvar ModalDismissReasons;\n(function (ModalDismissReasons) {\n ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\n ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\n})(ModalDismissReasons || (ModalDismissReasons = {}));\n\nclass NgbModalWindow {\n constructor(_document, _elRef, _zone) {\n this._document = _document;\n this._elRef = _elRef;\n this._zone = _zone;\n this._closed$ = new Subject();\n this._elWithFocus = null; // element that is focused prior to modal opening\n this.backdrop = true;\n this.keyboard = true;\n this.dismissEvent = new EventEmitter();\n this.shown = new Subject();\n this.hidden = new Subject();\n }\n dismiss(reason) { this.dismissEvent.emit(reason); }\n ngOnInit() {\n this._elWithFocus = this._document.activeElement;\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => { this._show(); });\n }\n ngOnDestroy() { this._disableEventHandling(); }\n hide() {\n const { nativeElement } = this._elRef;\n const context = { animation: this.animation, runningTransition: 'stop' };\n const windowTransition$ = ngbRunTransition(this._zone, nativeElement, () => nativeElement.classList.remove('show'), context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\n const transitions$ = zip(windowTransition$, dialogTransition$);\n transitions$.subscribe(() => {\n this.hidden.next();\n this.hidden.complete();\n });\n this._disableEventHandling();\n this._restoreFocus();\n return transitions$;\n }\n _show() {\n const context = { animation: this.animation, runningTransition: 'continue' };\n const windowTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n }, context);\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\n zip(windowTransition$, dialogTransition$).subscribe(() => {\n this.shown.next();\n this.shown.complete();\n });\n this._enableEventHandling();\n this._setFocus();\n }\n _enableEventHandling() {\n const { nativeElement } = this._elRef;\n this._zone.runOutsideAngular(() => {\n fromEvent(nativeElement, 'keydown')\n .pipe(takeUntil(this._closed$), \n // tslint:disable-next-line:deprecation\n filter(e => e.which === Key.Escape))\n .subscribe(event => {\n if (this.keyboard) {\n requestAnimationFrame(() => {\n if (!event.defaultPrevented) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\n }\n });\n }\n else if (this.backdrop === 'static') {\n this._bumpBackdrop();\n }\n });\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\n // inside the modal dialog and releasing it outside\n let preventClose = false;\n fromEvent(this._dialogEl.nativeElement, 'mousedown')\n .pipe(takeUntil(this._closed$), tap(() => preventClose = false), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({ target }) => nativeElement === target))\n .subscribe(() => { preventClose = true; });\n // We're listening to 'click' to dismiss modal on modal window click, except when:\n // 1. clicking on modal dialog itself\n // 2. closing was prevented by mousedown/up handlers\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\n fromEvent(nativeElement, 'click').pipe(takeUntil(this._closed$)).subscribe(({ target }) => {\n if (nativeElement === target) {\n if (this.backdrop === 'static') {\n this._bumpBackdrop();\n }\n else if (this.backdrop === true && !preventClose) {\n this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\n }\n }\n preventClose = false;\n });\n });\n }\n _disableEventHandling() { this._closed$.next(); }\n _setFocus() {\n const { nativeElement } = this._elRef;\n if (!nativeElement.contains(document.activeElement)) {\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\n elementToFocus.focus();\n }\n }\n _restoreFocus() {\n const body = this._document.body;\n const elWithFocus = this._elWithFocus;\n let elementToFocus;\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\n elementToFocus = elWithFocus;\n }\n else {\n elementToFocus = body;\n }\n this._zone.runOutsideAngular(() => {\n setTimeout(() => elementToFocus.focus());\n this._elWithFocus = null;\n });\n }\n _bumpBackdrop() {\n if (this.backdrop === 'static') {\n ngbRunTransition(this._zone, this._elRef.nativeElement, ({ classList }) => {\n classList.add('modal-static');\n return () => classList.remove('modal-static');\n }, { animation: this.animation, runningTransition: 'continue' });\n }\n }\n}\nNgbModalWindow.ɵfac = function NgbModalWindow_Factory(t) { return new (t || NgbModalWindow)(ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbModalWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalWindow, selectors: [[\"ngb-modal-window\"]], viewQuery: function NgbModalWindow_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c31, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._dialogEl = _t.first);\n } }, hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"], hostVars: 7, hostBindings: function NgbModalWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-describedby\", ctx.ariaDescribedBy);\n ɵngcc0.ɵɵclassMap(\"modal d-block\" + (ctx.windowClass ? \" \" + ctx.windowClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { backdrop: \"backdrop\", keyboard: \"keyboard\", animation: \"animation\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", centered: \"centered\", scrollable: \"scrollable\", size: \"size\", windowClass: \"windowClass\", modalDialogClass: \"modalDialogClass\" }, outputs: { dismissEvent: \"dismiss\" }, ngContentSelectors: _c3, decls: 4, vars: 2, consts: [[\"role\", \"document\"], [\"dialog\", \"\"], [1, \"modal-content\"]], template: function NgbModalWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-dialog\" + (ctx.size ? \" modal-\" + ctx.size : \"\") + (ctx.centered ? \" modal-dialog-centered\" : \"\") + (ctx.scrollable ? \" modal-dialog-scrollable\" : \"\") + (ctx.modalDialogClass ? \" \" + ctx.modalDialogClass : \"\"));\n } }, styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\"], encapsulation: 2 });\nNgbModalWindow.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ElementRef },\n { type: NgZone }\n];\nNgbModalWindow.propDecorators = {\n _dialogEl: [{ type: ViewChild, args: ['dialog', { static: true },] }],\n animation: [{ type: Input }],\n ariaLabelledBy: [{ type: Input }],\n ariaDescribedBy: [{ type: Input }],\n backdrop: [{ type: Input }],\n centered: [{ type: Input }],\n keyboard: [{ type: Input }],\n scrollable: [{ type: Input }],\n size: [{ type: Input }],\n windowClass: [{ type: Input }],\n modalDialogClass: [{ type: Input }],\n dismissEvent: [{ type: Output, args: ['dismiss',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-window',\n host: {\n '[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.aria-describedby]': 'ariaDescribedBy'\n },\n template: `\n
    \n
    \n
    \n `,\n encapsulation: ViewEncapsulation.None,\n styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\"]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { backdrop: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }], _dialogEl: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], animation: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], centered: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], size: [{\n type: Input\n }], windowClass: [{\n type: Input\n }], modalDialogClass: [{\n type: Input\n }] }); })();\n\nclass NgbModalStack {\n constructor(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\n this._applicationRef = _applicationRef;\n this._injector = _injector;\n this._document = _document;\n this._scrollBar = _scrollBar;\n this._rendererFactory = _rendererFactory;\n this._ngZone = _ngZone;\n this._activeWindowCmptHasChanged = new Subject();\n this._ariaHiddenValues = new Map();\n this._backdropAttributes = ['animation', 'backdropClass'];\n this._modalRefs = [];\n this._windowAttributes = [\n 'animation', 'ariaLabelledBy', 'ariaDescribedBy', 'backdrop', 'centered', 'keyboard', 'scrollable', 'size',\n 'windowClass', 'modalDialogClass'\n ];\n this._windowCmpts = [];\n this._activeInstances = new EventEmitter();\n // Trap focus on active WindowCmpt\n this._activeWindowCmptHasChanged.subscribe(() => {\n if (this._windowCmpts.length) {\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\n ngbFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\n this._revertAriaHidden();\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\n }\n });\n }\n open(moduleCFR, contentInjector, content, options) {\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ?\n this._document.querySelector(options.container) :\n this._document.body;\n const renderer = this._rendererFactory.createRenderer(null, null);\n const revertPaddingForScrollBar = this._scrollBar.compensate();\n const removeBodyClass = () => {\n if (!this._modalRefs.length) {\n renderer.removeClass(this._document.body, 'modal-open');\n this._revertAriaHidden();\n }\n };\n if (!containerEl) {\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\n }\n const activeModal = new NgbActiveModal();\n const contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : undefined;\n let windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\n this._registerModalRef(ngbModalRef);\n this._registerWindowCmpt(windowCmptRef);\n ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\n ngbModalRef.result.then(removeBodyClass, removeBodyClass);\n activeModal.close = (result) => { ngbModalRef.close(result); };\n activeModal.dismiss = (reason) => { ngbModalRef.dismiss(reason); };\n this._applyWindowOptions(windowCmptRef.instance, options);\n if (this._modalRefs.length === 1) {\n renderer.addClass(this._document.body, 'modal-open');\n }\n if (backdropCmptRef && backdropCmptRef.instance) {\n this._applyBackdropOptions(backdropCmptRef.instance, options);\n backdropCmptRef.changeDetectorRef.detectChanges();\n }\n windowCmptRef.changeDetectorRef.detectChanges();\n return ngbModalRef;\n }\n get activeInstances() { return this._activeInstances; }\n dismissAll(reason) { this._modalRefs.forEach(ngbModalRef => ngbModalRef.dismiss(reason)); }\n hasOpenModals() { return this._modalRefs.length > 0; }\n _attachBackdrop(moduleCFR, containerEl) {\n let backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\n let backdropCmptRef = backdropFactory.create(this._injector);\n this._applicationRef.attachView(backdropCmptRef.hostView);\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\n return backdropCmptRef;\n }\n _attachWindowComponent(moduleCFR, containerEl, contentRef) {\n let windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\n let windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\n this._applicationRef.attachView(windowCmptRef.hostView);\n containerEl.appendChild(windowCmptRef.location.nativeElement);\n return windowCmptRef;\n }\n _applyWindowOptions(windowInstance, options) {\n this._windowAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n windowInstance[optionName] = options[optionName];\n }\n });\n }\n _applyBackdropOptions(backdropInstance, options) {\n this._backdropAttributes.forEach((optionName) => {\n if (isDefined(options[optionName])) {\n backdropInstance[optionName] = options[optionName];\n }\n });\n }\n _getContentRef(moduleCFR, contentInjector, content, activeModal, options) {\n if (!content) {\n return new ContentRef([]);\n }\n else if (content instanceof TemplateRef) {\n return this._createFromTemplateRef(content, activeModal);\n }\n else if (isString(content)) {\n return this._createFromString(content);\n }\n else {\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\n }\n }\n _createFromTemplateRef(content, activeModal) {\n const context = {\n $implicit: activeModal,\n close(result) { activeModal.close(result); },\n dismiss(reason) { activeModal.dismiss(reason); }\n };\n const viewRef = content.createEmbeddedView(context);\n this._applicationRef.attachView(viewRef);\n return new ContentRef([viewRef.rootNodes], viewRef);\n }\n _createFromString(content) {\n const component = this._document.createTextNode(`${content}`);\n return new ContentRef([[component]]);\n }\n _createFromComponent(moduleCFR, contentInjector, content, context, options) {\n const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\n const modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\n const componentRef = contentCmptFactory.create(modalContentInjector);\n const componentNativeEl = componentRef.location.nativeElement;\n if (options.scrollable) {\n componentNativeEl.classList.add('component-host-scrollable');\n }\n this._applicationRef.attachView(componentRef.hostView);\n // FIXME: we should here get rid of the component nativeElement\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\n }\n _setAriaHidden(element) {\n const parent = element.parentElement;\n if (parent && element !== this._document.body) {\n Array.from(parent.children).forEach(sibling => {\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\n sibling.setAttribute('aria-hidden', 'true');\n }\n });\n this._setAriaHidden(parent);\n }\n }\n _revertAriaHidden() {\n this._ariaHiddenValues.forEach((value, element) => {\n if (value) {\n element.setAttribute('aria-hidden', value);\n }\n else {\n element.removeAttribute('aria-hidden');\n }\n });\n this._ariaHiddenValues.clear();\n }\n _registerModalRef(ngbModalRef) {\n const unregisterModalRef = () => {\n const index = this._modalRefs.indexOf(ngbModalRef);\n if (index > -1) {\n this._modalRefs.splice(index, 1);\n this._activeInstances.emit(this._modalRefs);\n }\n };\n this._modalRefs.push(ngbModalRef);\n this._activeInstances.emit(this._modalRefs);\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\n }\n _registerWindowCmpt(ngbWindowCmpt) {\n this._windowCmpts.push(ngbWindowCmpt);\n this._activeWindowCmptHasChanged.next();\n ngbWindowCmpt.onDestroy(() => {\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\n if (index > -1) {\n this._windowCmpts.splice(index, 1);\n this._activeWindowCmptHasChanged.next();\n }\n });\n }\n}\nNgbModalStack.ɵfac = function NgbModalStack_Factory(t) { return new (t || NgbModalStack)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ScrollBar), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nNgbModalStack.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(i0.ɵɵinject(i0.ApplicationRef), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(ScrollBar), i0.ɵɵinject(i0.RendererFactory2), i0.ɵɵinject(i0.NgZone)); }, token: NgbModalStack, providedIn: \"root\" });\nNgbModalStack.ctorParameters = () => [\n { type: ApplicationRef },\n { type: Injector },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ScrollBar },\n { type: RendererFactory2 },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalStack, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: ɵngcc0.RendererFactory2 }, { type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * A service for opening modal windows.\n *\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\n * the `.open()` method.\n */\nclass NgbModal {\n constructor(_moduleCFR, _injector, _modalStack, _config) {\n this._moduleCFR = _moduleCFR;\n this._injector = _injector;\n this._modalStack = _modalStack;\n this._config = _config;\n }\n /**\n * Opens a new modal window with the specified content and supplied options.\n *\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\n *\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\n */\n open(content, options = {}) {\n const combinedOptions = Object.assign(Object.assign(Object.assign({}, this._config), { animation: this._config.animation }), options);\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\n }\n /**\n * Returns an observable that holds the active modal instances.\n */\n get activeInstances() { return this._modalStack.activeInstances; }\n /**\n * Dismisses all currently displayed modal windows with the supplied reason.\n *\n * @since 3.1.0\n */\n dismissAll(reason) { this._modalStack.dismissAll(reason); }\n /**\n * Indicates if there are currently any open modal windows in the application.\n *\n * @since 3.3.0\n */\n hasOpenModals() { return this._modalStack.hasOpenModals(); }\n}\nNgbModal.ɵfac = function NgbModal_Factory(t) { return new (t || NgbModal)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(NgbModalStack), ɵngcc0.ɵɵinject(NgbModalConfig)); };\nNgbModal.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(i0.ɵɵinject(i0.ComponentFactoryResolver), i0.ɵɵinject(i0.INJECTOR), i0.ɵɵinject(NgbModalStack), i0.ɵɵinject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\nNgbModal.ctorParameters = () => [\n { type: ComponentFactoryResolver },\n { type: Injector },\n { type: NgbModalStack },\n { type: NgbModalConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModal, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: NgbModalStack }, { type: NgbModalConfig }]; }, null); })();\n\nclass NgbModalModule {\n}\nNgbModalModule.ɵfac = function NgbModalModule_Factory(t) { return new (t || NgbModalModule)(); };\nNgbModalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModalModule });\nNgbModalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [NgbModal] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbModalBackdrop, NgbModalWindow],\n entryComponents: [NgbModalBackdrop, NgbModalWindow],\n providers: [NgbModal]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModalModule, { declarations: [NgbModalBackdrop, NgbModalWindow] }); })();\n\n/**\n * A configuration service for the [`NgbNav`](#/components/nav/api#NgbNav) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the navs used in the application.\n *\n * @since 5.2.0\n */\nclass NgbNavConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.destroyOnHide = true;\n this.orientation = 'horizontal';\n this.roles = 'tablist';\n this.keyboard = false;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbNavConfig.ɵfac = function NgbNavConfig_Factory(t) { return new (t || NgbNavConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbNavConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbNavConfig_Factory() { return new NgbNavConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbNavConfig, providedIn: \"root\" });\nNgbNavConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst isValidNavId = (id) => isDefined(id) && id !== '';\nconst ɵ0$1 = isValidNavId;\nlet navCounter = 0;\n/**\n * This directive must be used to wrap content to be displayed in the nav.\n *\n * @since 5.2.0\n */\nclass NgbNavContent {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbNavContent.ɵfac = function NgbNavContent_Factory(t) { return new (t || NgbNavContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbNavContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavContent, selectors: [[\"ng-template\", \"ngbNavContent\", \"\"]] });\nNgbNavContent.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbNavContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * The directive used to group nav link and related nav content. As well as set nav identifier and some options.\n *\n * @since 5.2.0\n */\nclass NgbNavItem {\n constructor(nav, elementRef) {\n this.elementRef = elementRef;\n /**\n * If `true`, the current nav item is disabled and can't be toggled by user.\n *\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\n */\n this.disabled = false;\n /**\n * An event emitted when the fade in transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished on the related nav content\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n // TODO: cf https://github.com/angular/angular/issues/30106\n this._nav = nav;\n }\n ngAfterContentChecked() {\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\n // only @ContentChildren allows us to specify the {descendants: false} option.\n // Without {descendants: false} we are hitting bugs described in:\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\n this.contentTpl = this.contentTpls.first;\n }\n ngOnInit() {\n if (!isDefined(this.domId)) {\n this.domId = `ngb-nav-${navCounter++}`;\n }\n }\n get active() { return this._nav.activeId === this.id; }\n get id() { return isValidNavId(this._id) ? this._id : this.domId; }\n get panelDomId() { return `${this.domId}-panel`; }\n isPanelInDom() {\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\n }\n}\nNgbNavItem.ɵfac = function NgbNavItem_Factory(t) { return new (t || NgbNavItem)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbNav)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavItem, selectors: [[\"\", \"ngbNavItem\", \"\"]], contentQueries: function NgbNavItem_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, hostVars: 2, hostBindings: function NgbNavItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"nav-item\", true);\n } }, inputs: { disabled: \"disabled\", domId: \"domId\", destroyOnHide: \"destroyOnHide\", _id: [\"ngbNavItem\", \"_id\"] }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbNavItem\"] });\nNgbNavItem.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbNav),] }] },\n { type: ElementRef }\n];\nNgbNavItem.propDecorators = {\n destroyOnHide: [{ type: Input }],\n disabled: [{ type: Input }],\n domId: [{ type: Input }],\n _id: [{ type: Input, args: ['ngbNavItem',] }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }],\n contentTpls: [{ type: ContentChildren, args: [NgbNavContent, { descendants: false },] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavItem, [{\n type: Directive,\n args: [{ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', host: { '[class.nav-item]': 'true' } }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbNav)]\n }] }, { type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], domId: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], _id: [{\n type: Input,\n args: ['ngbNavItem']\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbNavContent, { descendants: false }]\n }] }); })();\n/**\n * A nav directive that helps with implementing tabbed navigation components.\n *\n * @since 5.2.0\n */\nclass NgbNav {\n constructor(role, config, _cd, _document) {\n this.role = role;\n this._cd = _cd;\n this._document = _document;\n /**\n * The event emitted after the active nav changes\n * The payload of the event is the newly active nav id\n *\n * If you want to prevent nav change, you should use `(navChange)` event\n */\n this.activeIdChange = new EventEmitter();\n /**\n * An event emitted when the fade in transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just shown.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the fade out transition is finished for one of the items.\n *\n * Payload of the event is the nav id that was just hidden.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n this.destroy$ = new Subject();\n this.navItemChange$ = new Subject();\n /**\n * The nav change event emitted right before the nav change happens on user click.\n *\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\n *\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\n */\n this.navChange = new EventEmitter();\n this.animation = config.animation;\n this.destroyOnHide = config.destroyOnHide;\n this.orientation = config.orientation;\n this.roles = config.roles;\n this.keyboard = config.keyboard;\n }\n click(item) {\n if (!item.disabled) {\n this._updateActiveId(item.id);\n }\n }\n onKeyDown(event) {\n if (this.roles !== 'tablist' || !this.keyboard) {\n return;\n }\n // tslint:disable-next-line: deprecation\n const key = event.which;\n const enabledLinks = this.links.filter(link => !link.navItem.disabled);\n const { length } = enabledLinks;\n let position = -1;\n enabledLinks.forEach((link, index) => {\n if (link.elRef.nativeElement === this._document.activeElement) {\n position = index;\n }\n });\n if (length) {\n switch (key) {\n case Key.ArrowLeft:\n if (this.orientation === 'vertical') {\n return;\n }\n position = (position - 1 + length) % length;\n break;\n case Key.ArrowRight:\n if (this.orientation === 'vertical') {\n return;\n }\n position = (position + 1) % length;\n break;\n case Key.ArrowDown:\n if (this.orientation === 'horizontal') {\n return;\n }\n position = (position + 1) % length;\n break;\n case Key.ArrowUp:\n if (this.orientation === 'horizontal') {\n return;\n }\n position = (position - 1 + length) % length;\n break;\n case Key.Home:\n position = 0;\n break;\n case Key.End:\n position = length - 1;\n break;\n }\n if (this.keyboard === 'changeWithArrows') {\n this.select(enabledLinks[position].navItem.id);\n }\n enabledLinks[position].elRef.nativeElement.focus();\n event.preventDefault();\n }\n }\n /**\n * Selects the nav with the given id and shows its associated pane.\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\n */\n select(id) { this._updateActiveId(id, false); }\n ngAfterContentInit() {\n if (!isDefined(this.activeId)) {\n const nextId = this.items.first ? this.items.first.id : null;\n if (isValidNavId(nextId)) {\n this._updateActiveId(nextId, false);\n this._cd.detectChanges();\n }\n }\n this.items.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this._notifyItemChanged(this.activeId));\n }\n ngOnChanges({ activeId }) {\n if (activeId && !activeId.firstChange) {\n this._notifyItemChanged(activeId.currentValue);\n }\n }\n ngOnDestroy() { this.destroy$.next(); }\n _updateActiveId(nextId, emitNavChange = true) {\n if (this.activeId !== nextId) {\n let defaultPrevented = false;\n if (emitNavChange) {\n this.navChange.emit({ activeId: this.activeId, nextId, preventDefault: () => { defaultPrevented = true; } });\n }\n if (!defaultPrevented) {\n this.activeId = nextId;\n this.activeIdChange.emit(nextId);\n this._notifyItemChanged(nextId);\n }\n }\n }\n _notifyItemChanged(nextItemId) { this.navItemChange$.next(this._getItemById(nextItemId)); }\n _getItemById(itemId) {\n return this.items && this.items.find(item => item.id === itemId) || null;\n }\n}\nNgbNav.ɵfac = function NgbNav_Factory(t) { return new (t || NgbNav)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nNgbNav.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNav, selectors: [[\"\", \"ngbNav\", \"\"]], contentQueries: function NgbNav_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavItem, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavLink, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.links = _t);\n } }, hostVars: 6, hostBindings: function NgbNav_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbNav_keydown_arrowLeft_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowRight\", function NgbNav_keydown_arrowRight_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowDown\", function NgbNav_keydown_arrowDown_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowUp\", function NgbNav_keydown_arrowUp_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.Home\", function NgbNav_keydown_Home_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.End\", function NgbNav_keydown_End_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.orientation === \"vertical\" && ctx.roles === \"tablist\" ? \"vertical\" : undefined)(\"role\", ctx.role ? ctx.role : ctx.roles ? \"tablist\" : undefined);\n ɵngcc0.ɵɵclassProp(\"nav\", true)(\"flex-column\", ctx.orientation === \"vertical\");\n } }, inputs: { animation: \"animation\", destroyOnHide: \"destroyOnHide\", orientation: \"orientation\", roles: \"roles\", keyboard: \"keyboard\", activeId: \"activeId\" }, outputs: { activeIdChange: \"activeIdChange\", shown: \"shown\", hidden: \"hidden\", navChange: \"navChange\" }, exportAs: [\"ngbNav\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbNav.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\n { type: NgbNavConfig },\n { type: ChangeDetectorRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nNgbNav.propDecorators = {\n activeId: [{ type: Input }],\n activeIdChange: [{ type: Output }],\n animation: [{ type: Input }],\n destroyOnHide: [{ type: Input }],\n orientation: [{ type: Input }],\n roles: [{ type: Input }],\n keyboard: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }],\n items: [{ type: ContentChildren, args: [NgbNavItem,] }],\n links: [{ type: ContentChildren, args: [forwardRef(() => NgbNavLink), { descendants: true },] }],\n navChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNav, [{\n type: Directive,\n args: [{\n selector: '[ngbNav]',\n exportAs: 'ngbNav',\n host: {\n '[class.nav]': 'true',\n '[class.flex-column]': `orientation === 'vertical'`,\n '[attr.aria-orientation]': `orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined`,\n '[attr.role]': `role ? role : roles ? 'tablist' : undefined`,\n '(keydown.arrowLeft)': 'onKeyDown($event)',\n '(keydown.arrowRight)': 'onKeyDown($event)',\n '(keydown.arrowDown)': 'onKeyDown($event)',\n '(keydown.arrowUp)': 'onKeyDown($event)',\n '(keydown.Home)': 'onKeyDown($event)',\n '(keydown.End)': 'onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { activeIdChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], navChange: [{\n type: Output\n }], animation: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roles: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], activeId: [{\n type: Input\n }], items: [{\n type: ContentChildren,\n args: [NgbNavItem]\n }], links: [{\n type: ContentChildren,\n args: [forwardRef(() => NgbNavLink), { descendants: true }]\n }] }); })();\n/**\n * A directive to put on the nav link.\n *\n * @since 5.2.0\n */\nclass NgbNavLink {\n constructor(role, navItem, nav, elRef) {\n this.role = role;\n this.navItem = navItem;\n this.nav = nav;\n this.elRef = elRef;\n }\n hasNavItemClass() {\n // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\n return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\n }\n}\nNgbNavLink.ɵfac = function NgbNavLink_Factory(t) { return new (t || NgbNavLink)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavItem), ɵngcc0.ɵɵdirectiveInject(NgbNav), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavLink.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavLink, selectors: [[\"a\", \"ngbNavLink\", \"\"]], hostAttrs: [\"href\", \"\"], hostVars: 14, hostBindings: function NgbNavLink_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbNavLink_click_HostBindingHandler($event) { ctx.nav.click(ctx.navItem); return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.navItem.domId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tab\" : undefined)(\"tabindex\", ctx.navItem.disabled ? -1 : undefined)(\"aria-controls\", ctx.navItem.isPanelInDom() ? ctx.navItem.panelDomId : null)(\"aria-selected\", ctx.navItem.active)(\"aria-disabled\", ctx.navItem.disabled);\n ɵngcc0.ɵɵclassProp(\"nav-link\", true)(\"nav-item\", ctx.hasNavItemClass())(\"active\", ctx.navItem.active)(\"disabled\", ctx.navItem.disabled);\n } } });\nNgbNavLink.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\n { type: NgbNavItem },\n { type: NgbNav },\n { type: ElementRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavLink, [{\n type: Directive,\n args: [{\n selector: 'a[ngbNavLink]',\n host: {\n '[id]': 'navItem.domId',\n '[class.nav-link]': 'true',\n '[class.nav-item]': 'hasNavItemClass()',\n '[attr.role]': `role ? role : nav.roles ? 'tab' : undefined`,\n 'href': '',\n '[class.active]': 'navItem.active',\n '[class.disabled]': 'navItem.disabled',\n '[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n '[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n '[attr.aria-selected]': 'navItem.active',\n '[attr.aria-disabled]': 'navItem.disabled',\n '(click)': 'nav.click(navItem); $event.preventDefault()'\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavItem }, { type: NgbNav }, { type: ɵngcc0.ElementRef }]; }, null); })();\n\nconst ngbNavFadeOutTransition = ({ classList }) => {\n classList.remove('show');\n return () => classList.remove('active');\n};\nconst ngbNavFadeInTransition = (element, animation) => {\n if (animation) {\n reflow(element);\n }\n element.classList.add('show');\n};\n\nclass NgbNavPane {\n constructor(elRef) {\n this.elRef = elRef;\n }\n}\nNgbNavPane.ɵfac = function NgbNavPane_Factory(t) { return new (t || NgbNavPane)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavPane.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavPane, selectors: [[\"\", \"ngbNavPane\", \"\"]], hostAttrs: [1, \"tab-pane\"], hostVars: 5, hostBindings: function NgbNavPane_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.item.panelDomId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tabpanel\" : undefined)(\"aria-labelledby\", ctx.item.domId);\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.nav.animation);\n } }, inputs: { item: \"item\", nav: \"nav\", role: \"role\" } });\nNgbNavPane.ctorParameters = () => [\n { type: ElementRef }\n];\nNgbNavPane.propDecorators = {\n item: [{ type: Input }],\n nav: [{ type: Input }],\n role: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavPane, [{\n type: Directive,\n args: [{\n selector: '[ngbNavPane]',\n host: {\n '[id]': 'item.panelDomId',\n 'class': 'tab-pane',\n '[class.fade]': 'nav.animation',\n '[attr.role]': 'role ? role : nav.roles ? \"tabpanel\" : undefined',\n '[attr.aria-labelledby]': 'item.domId'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { item: [{\n type: Input\n }], nav: [{\n type: Input\n }], role: [{\n type: Input\n }] }); })();\n/**\n * The outlet where currently active nav content will be displayed.\n *\n * @since 5.2.0\n */\nclass NgbNavOutlet {\n constructor(_cd, _ngZone) {\n this._cd = _cd;\n this._ngZone = _ngZone;\n this._activePane = null;\n }\n isPanelTransitioning(item) { var _a; return ((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) === item; }\n ngAfterViewInit() {\n var _a;\n // initial display\n this._updateActivePane();\n // this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\n this.nav.navItemChange$\n .pipe(takeUntil(this.nav.destroy$), startWith(((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) || null), distinctUntilChanged(), skip(1))\n .subscribe(nextItem => {\n const options = { animation: this.nav.animation, runningTransition: 'stop' };\n // next panel we're switching to will only appear in DOM after the change detection is done\n // and `this._panes` will be updated\n this._cd.detectChanges();\n // fading out\n if (this._activePane) {\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeOutTransition, options)\n .subscribe(() => {\n var _a;\n const activeItem = (_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item;\n this._activePane = this._getPaneForItem(nextItem);\n // mark for check when transition finishes as outlet or parent containers might be OnPush\n // without this the panes that have \"faded out\" will stay in DOM\n this._cd.markForCheck();\n // fading in\n if (this._activePane) {\n // we have to add the '.active' class before running the transition,\n // because it should be in place before `ngbRunTransition` does `reflow()`\n this._activePane.elRef.nativeElement.classList.add('active');\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeInTransition, options)\n .subscribe(() => {\n if (nextItem) {\n nextItem.shown.emit();\n this.nav.shown.emit(nextItem.id);\n }\n });\n }\n if (activeItem) {\n activeItem.hidden.emit();\n this.nav.hidden.emit(activeItem.id);\n }\n });\n }\n else {\n this._updateActivePane();\n }\n });\n }\n _updateActivePane() {\n var _a, _b;\n this._activePane = this._getActivePane();\n (_a = this._activePane) === null || _a === void 0 ? void 0 : _a.elRef.nativeElement.classList.add('show');\n (_b = this._activePane) === null || _b === void 0 ? void 0 : _b.elRef.nativeElement.classList.add('active');\n }\n _getPaneForItem(item) {\n return this._panes && this._panes.find(pane => pane.item === item) || null;\n }\n _getActivePane() {\n return this._panes && this._panes.find(pane => pane.item.active) || null;\n }\n}\nNgbNavOutlet.ɵfac = function NgbNavOutlet_Factory(t) { return new (t || NgbNavOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbNavOutlet.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbNavOutlet, selectors: [[\"\", \"ngbNavOutlet\", \"\"]], viewQuery: function NgbNavOutlet_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgbNavPane, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._panes = _t);\n } }, hostVars: 2, hostBindings: function NgbNavOutlet_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"tab-content\", true);\n } }, inputs: { paneRole: \"paneRole\", nav: [\"ngbNavOutlet\", \"nav\"] }, attrs: _c32, decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\", 4, \"ngIf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbNavOutlet_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_Template, 1, 1, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.nav.items);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, NgbNavPane, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\nNgbNavOutlet.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: NgZone }\n];\nNgbNavOutlet.propDecorators = {\n _panes: [{ type: ViewChildren, args: [NgbNavPane,] }],\n paneRole: [{ type: Input }],\n nav: [{ type: Input, args: ['ngbNavOutlet',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavOutlet, [{\n type: Component,\n args: [{\n selector: '[ngbNavOutlet]',\n host: { '[class.tab-content]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n \n
    \n \n
    \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { _panes: [{\n type: ViewChildren,\n args: [NgbNavPane]\n }], paneRole: [{\n type: Input\n }], nav: [{\n type: Input,\n args: ['ngbNavOutlet']\n }] }); })();\n\nconst NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\nclass NgbNavModule {\n}\nNgbNavModule.ɵfac = function NgbNavModule_Factory(t) { return new (t || NgbNavModule)(); };\nNgbNavModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbNavModule });\nNgbNavModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavModule, [{\n type: NgModule,\n args: [{ declarations: NGB_NAV_DIRECTIVES, exports: NGB_NAV_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbNavModule, { declarations: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane]; } }); })();\n\n/**\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the paginations used in the application.\n */\nclass NgbPaginationConfig {\n constructor() {\n this.disabled = false;\n this.boundaryLinks = false;\n this.directionLinks = true;\n this.ellipses = true;\n this.maxSize = 0;\n this.pageSize = 10;\n this.rotate = false;\n }\n}\nNgbPaginationConfig.ɵfac = function NgbPaginationConfig_Factory(t) { return new (t || NgbPaginationConfig)(); };\nNgbPaginationConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * A directive to match the 'ellipsis' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationEllipsis {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationEllipsis.ɵfac = function NgbPaginationEllipsis_Factory(t) { return new (t || NgbPaginationEllipsis)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationEllipsis.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationEllipsis, selectors: [[\"ng-template\", \"ngbPaginationEllipsis\", \"\"]] });\nNgbPaginationEllipsis.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationEllipsis, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationEllipsis]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'first' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationFirst {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationFirst.ɵfac = function NgbPaginationFirst_Factory(t) { return new (t || NgbPaginationFirst)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationFirst.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationFirst, selectors: [[\"ng-template\", \"ngbPaginationFirst\", \"\"]] });\nNgbPaginationFirst.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationFirst, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationFirst]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'last' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationLast {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationLast.ɵfac = function NgbPaginationLast_Factory(t) { return new (t || NgbPaginationLast)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationLast.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationLast, selectors: [[\"ng-template\", \"ngbPaginationLast\", \"\"]] });\nNgbPaginationLast.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationLast, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationLast]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'next' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationNext {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNext.ɵfac = function NgbPaginationNext_Factory(t) { return new (t || NgbPaginationNext)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNext.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNext, selectors: [[\"ng-template\", \"ngbPaginationNext\", \"\"]] });\nNgbPaginationNext.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNext, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNext]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the page 'number' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationNumber {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationNumber.ɵfac = function NgbPaginationNumber_Factory(t) { return new (t || NgbPaginationNumber)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNumber.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNumber, selectors: [[\"ng-template\", \"ngbPaginationNumber\", \"\"]] });\nNgbPaginationNumber.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNumber, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNumber]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'previous' link template\n *\n * @since 4.1.0\n */\nclass NgbPaginationPrevious {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationPrevious.ɵfac = function NgbPaginationPrevious_Factory(t) { return new (t || NgbPaginationPrevious)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPrevious.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPrevious, selectors: [[\"ng-template\", \"ngbPaginationPrevious\", \"\"]] });\nNgbPaginationPrevious.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPrevious, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPrevious]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A directive to match the 'pages' whole content\n *\n * @since 9.1.0\n */\nclass NgbPaginationPages {\n constructor(templateRef) {\n this.templateRef = templateRef;\n }\n}\nNgbPaginationPages.ɵfac = function NgbPaginationPages_Factory(t) { return new (t || NgbPaginationPages)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPages, selectors: [[\"ng-template\", \"ngbPaginationPages\", \"\"]] });\nNgbPaginationPages.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPages, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPages]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n/**\n * A component that displays page numbers and allows to customize them in several ways.\n */\nclass NgbPagination {\n constructor(config) {\n this.pageCount = 0;\n this.pages = [];\n /**\n * The current page.\n *\n * Page numbers start with `1`.\n */\n this.page = 1;\n /**\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\n *\n * Event payload is the number of the newly selected page.\n *\n * Page numbers start with `1`.\n */\n this.pageChange = new EventEmitter(true);\n this.disabled = config.disabled;\n this.boundaryLinks = config.boundaryLinks;\n this.directionLinks = config.directionLinks;\n this.ellipses = config.ellipses;\n this.maxSize = config.maxSize;\n this.pageSize = config.pageSize;\n this.rotate = config.rotate;\n this.size = config.size;\n }\n hasPrevious() { return this.page > 1; }\n hasNext() { return this.page < this.pageCount; }\n nextDisabled() { return !this.hasNext() || this.disabled; }\n previousDisabled() { return !this.hasPrevious() || this.disabled; }\n selectPage(pageNumber) { this._updatePages(pageNumber); }\n ngOnChanges(changes) { this._updatePages(this.page); }\n isEllipsis(pageNumber) { return pageNumber === -1; }\n /**\n * Appends ellipses and first/last page number to the displayed pages\n */\n _applyEllipses(start, end) {\n if (this.ellipses) {\n if (start > 0) {\n // The first page will always be included. If the displayed range\n // starts after the third page, then add ellipsis. But if the range\n // starts on the third page, then add the second page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (start > 2) {\n this.pages.unshift(-1);\n }\n else if (start === 2) {\n this.pages.unshift(2);\n }\n this.pages.unshift(1);\n }\n if (end < this.pageCount) {\n // The last page will always be included. If the displayed range\n // ends before the third-last page, then add ellipsis. But if the range\n // ends on third-last page, then add the second-last page instead of\n // an ellipsis, because the ellipsis would only hide a single page.\n if (end < (this.pageCount - 2)) {\n this.pages.push(-1);\n }\n else if (end === (this.pageCount - 2)) {\n this.pages.push(this.pageCount - 1);\n }\n this.pages.push(this.pageCount);\n }\n }\n }\n /**\n * Rotates page numbers based on maxSize items visible.\n * Currently selected page stays in the middle:\n *\n * Ex. for selected page = 6:\n * [5,*6*,7] for maxSize = 3\n * [4,5,*6*,7] for maxSize = 4\n */\n _applyRotation() {\n let start = 0;\n let end = this.pageCount;\n let leftOffset = Math.floor(this.maxSize / 2);\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\n if (this.page <= leftOffset) {\n // very beginning, no rotation -> [0..maxSize]\n end = this.maxSize;\n }\n else if (this.pageCount - this.page < leftOffset) {\n // very end, no rotation -> [len-maxSize..len]\n start = this.pageCount - this.maxSize;\n }\n else {\n // rotate\n start = this.page - leftOffset - 1;\n end = this.page + rightOffset;\n }\n return [start, end];\n }\n /**\n * Paginates page numbers based on maxSize items per page.\n */\n _applyPagination() {\n let page = Math.ceil(this.page / this.maxSize) - 1;\n let start = page * this.maxSize;\n let end = start + this.maxSize;\n return [start, end];\n }\n _setPageInRange(newPageNo) {\n const prevPageNo = this.page;\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\n this.pageChange.emit(this.page);\n }\n }\n _updatePages(newPage) {\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\n if (!isNumber(this.pageCount)) {\n this.pageCount = 0;\n }\n // fill-in model needed to render pages\n this.pages.length = 0;\n for (let i = 1; i <= this.pageCount; i++) {\n this.pages.push(i);\n }\n // set page within 1..max range\n this._setPageInRange(newPage);\n // apply maxSize if necessary\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\n let start = 0;\n let end = this.pageCount;\n // either paginating or rotating page numbers\n if (this.rotate) {\n [start, end] = this._applyRotation();\n }\n else {\n [start, end] = this._applyPagination();\n }\n this.pages = this.pages.slice(start, end);\n // adding ellipses\n this._applyEllipses(start, end);\n }\n }\n}\nNgbPagination.ɵfac = function NgbPagination_Factory(t) { return new (t || NgbPagination)(ɵngcc0.ɵɵdirectiveInject(NgbPaginationConfig)); };\nNgbPagination.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPagination, selectors: [[\"ngb-pagination\"]], contentQueries: function NgbPagination_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationEllipsis, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationFirst, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationLast, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNext, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNumber, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPrevious, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPages, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplEllipsis = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplFirst = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplLast = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNext = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNumber = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPrevious = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPages = _t.first);\n } }, hostAttrs: [\"role\", \"navigation\"], inputs: { page: \"page\", disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", maxSize: \"maxSize\", pageSize: \"pageSize\", rotate: \"rotate\", size: \"size\", collectionSize: \"collectionSize\" }, outputs: { pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 20, vars: 12, consts: function () { let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35 = goog.getMsg(\"\\u00AB\\u00AB\");\n i18n_34 = MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35;\n }\n else {\n i18n_34 = $localize `:@@ngb.pagination.first␟656506dfd46380956a655f919f1498d018f75ca0␟6867721956102594380:««`;\n } let i18n_36; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37 = goog.getMsg(\"\\u00AB\");\n i18n_36 = MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37;\n }\n else {\n i18n_36 = $localize `:@@ngb.pagination.previous␟6e52b6ee77a4848d899dd21b591c6fd499e3aef3␟6479320895410098858:«`;\n } let i18n_38; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39 = goog.getMsg(\"\\u00BB\");\n i18n_38 = MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39;\n }\n else {\n i18n_38 = $localize `:@@ngb.pagination.next␟ba9cbb4ff311464308a3627e4f1c3345d9fe6d7d␟5458177150283468089:»`;\n } let i18n_40; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41 = goog.getMsg(\"\\u00BB\\u00BB\");\n i18n_40 = MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41;\n }\n else {\n i18n_40 = $localize `:@@ngb.pagination.last␟49f27a460bc97e7e00be5b37098bfa79884fc7d9␟5277020320267646988:»»`;\n } let i18n_44; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45 = goog.getMsg(\"First\");\n i18n_44 = MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45;\n }\n else {\n i18n_44 = $localize `:@@ngb.pagination.first-aria␟f2f852318759c6396b5d3d17031d53817d7b38cc␟2241508602425256033:First`;\n } let i18n_47; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48 = goog.getMsg(\"Previous\");\n i18n_47 = MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48;\n }\n else {\n i18n_47 = $localize `:@@ngb.pagination.previous-aria␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_50; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51 = goog.getMsg(\"Next\");\n i18n_50 = MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51;\n }\n else {\n i18n_50 = $localize `:@@ngb.pagination.next-aria␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53 = goog.getMsg(\"Last\");\n i18n_52 = MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53;\n }\n else {\n i18n_52 = $localize `:@@ngb.pagination.last-aria␟5c729788ba138508aca1bec050b610f7bf81db3e␟4882268002141858767:Last`;\n } return [[\"first\", \"\"], [\"previous\", \"\"], [\"next\", \"\"], [\"last\", \"\"], [\"ellipsis\", \"\"], [\"defaultNumber\", \"\"], [\"defaultPages\", \"\"], [\"class\", \"page-item\", 3, \"disabled\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\"], i18n_34, i18n_36, i18n_38, i18n_40, [\"class\", \"sr-only\", 4, \"ngIf\"], [1, \"sr-only\"], [\"class\", \"page-item\", 3, \"active\", \"disabled\", 4, \"ngFor\", \"ngForOf\"], [1, \"page-item\"], [\"class\", \"page-link\", \"tabindex\", \"-1\", \"aria-disabled\", \"true\", 4, \"ngIf\"], [\"class\", \"page-link\", \"href\", \"\", 3, \"click\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"aria-disabled\", \"true\", 1, \"page-link\"], [\"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_44, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_47, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_50, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_52, \"href\", \"\", 1, \"page-link\", 3, \"click\"]]; }, template: function NgbPagination_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, NgbPagination_ng_template_4_Template, 2, 0, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(6, NgbPagination_ng_template_6_Template, 2, 0, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(8, NgbPagination_ng_template_8_Template, 1, 0, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(10, NgbPagination_ng_template_10_Template, 2, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(12, NgbPagination_ng_template_12_Template, 1, 1, \"ng-template\", null, 6, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(14, \"ul\");\n ɵngcc0.ɵɵtemplate(15, NgbPagination_li_15_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵtemplate(16, NgbPagination_li_16_Template, 3, 8, \"li\", 7);\n ɵngcc0.ɵɵtemplate(17, NgbPagination_ng_template_17_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵtemplate(18, NgbPagination_li_18_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵtemplate(19, NgbPagination_li_19_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r12 = ɵngcc0.ɵɵreference(13);\n ɵngcc0.ɵɵadvance(14);\n ɵngcc0.ɵɵclassMap(\"pagination\" + (ctx.size ? \" pagination-\" + ctx.size : \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.tplPages == null ? null : ctx.tplPages.templateRef) || _r12)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(8, _c54, ctx.page, ctx.pages, ctx.disabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf], encapsulation: 2, changeDetection: 0 });\nNgbPagination.ctorParameters = () => [\n { type: NgbPaginationConfig }\n];\nNgbPagination.propDecorators = {\n tplEllipsis: [{ type: ContentChild, args: [NgbPaginationEllipsis, { static: false },] }],\n tplFirst: [{ type: ContentChild, args: [NgbPaginationFirst, { static: false },] }],\n tplLast: [{ type: ContentChild, args: [NgbPaginationLast, { static: false },] }],\n tplNext: [{ type: ContentChild, args: [NgbPaginationNext, { static: false },] }],\n tplNumber: [{ type: ContentChild, args: [NgbPaginationNumber, { static: false },] }],\n tplPrevious: [{ type: ContentChild, args: [NgbPaginationPrevious, { static: false },] }],\n tplPages: [{ type: ContentChild, args: [NgbPaginationPages, { static: false },] }],\n disabled: [{ type: Input }],\n boundaryLinks: [{ type: Input }],\n directionLinks: [{ type: Input }],\n ellipses: [{ type: Input }],\n rotate: [{ type: Input }],\n collectionSize: [{ type: Input }],\n maxSize: [{ type: Input }],\n page: [{ type: Input }],\n pageSize: [{ type: Input }],\n pageChange: [{ type: Output }],\n size: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPagination, [{\n type: Component,\n args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: `\n ««\n «\n »\n »»\n ...\n \n {{ page }}\n (current)\n \n \n
  • \n \n \n \n \n \n \n
  • \n
    \n \n `\n }]\n }], function () { return [{ type: NgbPaginationConfig }]; }, { page: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], disabled: [{\n type: Input\n }], boundaryLinks: [{\n type: Input\n }], directionLinks: [{\n type: Input\n }], ellipses: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], rotate: [{\n type: Input\n }], size: [{\n type: Input\n }], tplEllipsis: [{\n type: ContentChild,\n args: [NgbPaginationEllipsis, { static: false }]\n }], tplFirst: [{\n type: ContentChild,\n args: [NgbPaginationFirst, { static: false }]\n }], tplLast: [{\n type: ContentChild,\n args: [NgbPaginationLast, { static: false }]\n }], tplNext: [{\n type: ContentChild,\n args: [NgbPaginationNext, { static: false }]\n }], tplNumber: [{\n type: ContentChild,\n args: [NgbPaginationNumber, { static: false }]\n }], tplPrevious: [{\n type: ContentChild,\n args: [NgbPaginationPrevious, { static: false }]\n }], tplPages: [{\n type: ContentChild,\n args: [NgbPaginationPages, { static: false }]\n }], collectionSize: [{\n type: Input\n }] }); })();\n\nconst DIRECTIVES = [\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\n NgbPaginationPrevious, NgbPaginationPages\n];\nclass NgbPaginationModule {\n}\nNgbPaginationModule.ɵfac = function NgbPaginationModule_Factory(t) { return new (t || NgbPaginationModule)(); };\nNgbPaginationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPaginationModule });\nNgbPaginationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationModule, [{\n type: NgModule,\n args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPaginationModule, { declarations: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages]; } }); })();\n\nclass Trigger {\n constructor(open, close) {\n this.open = open;\n this.close = close;\n if (!close) {\n this.close = open;\n }\n }\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\n}\nconst DEFAULT_ALIASES = {\n 'hover': ['mouseenter', 'mouseleave'],\n 'focus': ['focusin', 'focusout'],\n};\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\n const trimmedTriggers = (triggers || '').trim();\n if (trimmedTriggers.length === 0) {\n return [];\n }\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\n let alias = aliases[triggerPair[0]] || triggerPair;\n return new Trigger(alias[0], alias[1]);\n });\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\n if (manualTriggers.length > 1) {\n throw 'Triggers parse error: only one manual trigger is allowed';\n }\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\n }\n return parsedTriggers;\n}\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\n return new Observable(subscriber => {\n const listeners = [];\n const openFn = () => subscriber.next(true);\n const closeFn = () => subscriber.next(false);\n const toggleFn = () => subscriber.next(!isOpenedFn());\n triggers.forEach((trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\n }\n else {\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\n }\n });\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\n });\n}\nconst delayOrNoop = (time) => time > 0 ? delay(time) : (a) => a;\nconst ɵ0 = delayOrNoop;\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\n return (input$) => {\n let pending = null;\n const filteredInput$ = input$.pipe(map(open => ({ open })), filter(event => {\n const currentlyOpen = isOpenedFn();\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\n pending = event;\n return true;\n }\n if (pending && pending.open !== event.open) {\n pending = null;\n }\n return false;\n }), share());\n const delayedOpen$ = filteredInput$.pipe(filter(event => event.open), delayOrNoop(openDelay));\n const delayedClose$ = filteredInput$.pipe(filter(event => !event.open), delayOrNoop(closeDelay));\n return merge(delayedOpen$, delayedClose$)\n .pipe(filter(event => {\n if (event === pending) {\n pending = null;\n return event.open !== isOpenedFn();\n }\n return false;\n }), map(event => event.open));\n };\n}\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay = 0, closeDelay = 0) {\n const parsedTriggers = parseTriggers(triggers);\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return () => { };\n }\n const subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\n .subscribe(open => (open ? openFn() : closeFn()));\n return () => subscription.unsubscribe();\n}\n\n/**\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the popovers used in the application.\n */\nclass NgbPopoverConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'click';\n this.disablePopover = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbPopoverConfig.ɵfac = function NgbPopoverConfig_Factory(t) { return new (t || NgbPopoverConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbPopoverConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbPopoverConfig, providedIn: \"root\" });\nNgbPopoverConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nlet nextId$1 = 0;\nclass NgbPopoverWindow {\n isTitleTemplate() { return this.title instanceof TemplateRef; }\n}\nNgbPopoverWindow.ɵfac = function NgbPopoverWindow_Factory(t) { return new (t || NgbPopoverWindow)(); };\nNgbPopoverWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPopoverWindow, selectors: [[\"ngb-popover-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 5, hostBindings: function NgbPopoverWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"popover\" + (ctx.popoverClass ? \" \" + ctx.popoverClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, ngContentSelectors: _c3, decls: 4, vars: 1, consts: [[1, \"arrow\"], [\"class\", \"popover-header\", 4, \"ngIf\"], [1, \"popover-body\"], [1, \"popover-header\"], [\"simpleTitle\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbPopoverWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_Template, 4, 2, \"h3\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"], encapsulation: 2, changeDetection: 0 });\nNgbPopoverWindow.propDecorators = {\n animation: [{ type: Input }],\n title: [{ type: Input }],\n id: [{ type: Input }],\n popoverClass: [{ type: Input }],\n context: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `\n
    \n

    \n {{title}}\n \n

    \n
    `,\n styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{top:50%;margin-top:-.5rem}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{top:auto;bottom:.7em}\"]\n }]\n }], null, { animation: [{\n type: Input\n }], title: [{\n type: Input\n }], id: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], context: [{\n type: Input\n }] }); })();\n/**\n * A lightweight and extensible directive for fancy popover creation.\n */\nclass NgbPopover {\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the popover opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the popover closing animation has finished. Contains no payload.\n *\n * At this point popover is not in the DOM anymore.\n */\n this.hidden = new EventEmitter();\n this._ngbPopoverWindowId = `ngb-popover-${nextId$1++}`;\n this._windowRef = null;\n this.animation = config.animation;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disablePopover = config.disablePopover;\n this.popoverClass = config.popoverClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-popover');\n }\n });\n }\n _isDisabled() {\n if (this.disablePopover) {\n return true;\n }\n if (!this.ngbPopover && !this.popoverTitle) {\n return true;\n }\n return false;\n }\n /**\n * Opens the popover.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the popover template when it is created.\n */\n open(context) {\n if (!this._windowRef && !this._isDisabled()) {\n // this type assertion is safe because otherwise _isDisabled would return true\n const { windowRef, transition$ } = this._popupService.open(this.ngbPopover, context, this.animation);\n this._windowRef = windowRef;\n this._windowRef.instance.animation = this.animation;\n this._windowRef.instance.title = this.popoverTitle;\n this._windowRef.instance.context = context;\n this._windowRef.instance.popoverClass = this.popoverClass;\n this._windowRef.instance.id = this._ngbPopoverWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening popover from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because popover won't work inside the OnPush component.\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the popover from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n close() {\n if (this._windowRef) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close(this.animation).subscribe(() => {\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the popover.\n *\n * This is considered to be a \"manual\" triggering of the popover.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() { return this._windowRef != null; }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ ngbPopover, popoverTitle, disablePopover, popoverClass }) {\n if (popoverClass && this.isOpen()) {\n this._windowRef.instance.popoverClass = popoverClass.currentValue;\n }\n // close popover if title and content become empty, or disablePopover set to true\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\n this.close();\n }\n }\n ngOnDestroy() {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n }\n}\nNgbPopover.ɵfac = function NgbPopover_Factory(t) { return new (t || NgbPopover)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbPopoverConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbPopover.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPopover, selectors: [[\"\", \"ngbPopover\", \"\"]], inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disablePopover: \"disablePopover\", popoverClass: \"popoverClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbPopover: \"ngbPopover\", popoverTitle: \"popoverTitle\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbPopover\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbPopover.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbPopoverConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\nNgbPopover.propDecorators = {\n animation: [{ type: Input }],\n autoClose: [{ type: Input }],\n ngbPopover: [{ type: Input }],\n popoverTitle: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disablePopover: [{ type: Input }],\n popoverClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopover, [{\n type: Directive,\n args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbPopoverConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disablePopover: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbPopover: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }] }); })();\n\nclass NgbPopoverModule {\n}\nNgbPopoverModule.ɵfac = function NgbPopoverModule_Factory(t) { return new (t || NgbPopoverModule)(); };\nNgbPopoverModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPopoverModule });\nNgbPopoverModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbPopover, NgbPopoverWindow],\n exports: [NgbPopover],\n imports: [CommonModule],\n entryComponents: [NgbPopoverWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPopoverModule, { declarations: function () { return [NgbPopover, NgbPopoverWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPopover]; } }); })();\n\n/**\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the progress bars used in the application.\n */\nclass NgbProgressbarConfig {\n constructor() {\n this.max = 100;\n this.animated = false;\n this.striped = false;\n this.showValue = false;\n }\n}\nNgbProgressbarConfig.ɵfac = function NgbProgressbarConfig_Factory(t) { return new (t || NgbProgressbarConfig)(); };\nNgbProgressbarConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * A directive that provides feedback on the progress of a workflow or an action.\n */\nclass NgbProgressbar {\n constructor(config) {\n /**\n * The current value for the progress bar.\n *\n * Should be in the `[0, max]` range.\n */\n this.value = 0;\n this.max = config.max;\n this.animated = config.animated;\n this.striped = config.striped;\n this.textType = config.textType;\n this.type = config.type;\n this.showValue = config.showValue;\n this.height = config.height;\n }\n /**\n * The maximal value to be displayed in the progress bar.\n *\n * Should be a positive number. Will default to 100 otherwise.\n */\n set max(max) {\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\n }\n get max() { return this._max; }\n getValue() { return getValueInRange(this.value, this.max); }\n getPercentValue() { return 100 * this.getValue() / this.max; }\n}\nNgbProgressbar.ɵfac = function NgbProgressbar_Factory(t) { return new (t || NgbProgressbar)(ɵngcc0.ɵɵdirectiveInject(NgbProgressbarConfig)); };\nNgbProgressbar.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbProgressbar, selectors: [[\"ngb-progressbar\"]], hostAttrs: [1, \"progress\"], hostVars: 2, hostBindings: function NgbProgressbar_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height);\n } }, inputs: { value: \"value\", max: \"max\", animated: \"animated\", striped: \"striped\", textType: \"textType\", type: \"type\", showValue: \"showValue\", height: \"height\" }, ngContentSelectors: _c3, decls: 3, vars: 11, consts: function () { let i18n_55; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_55 = MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56;\n }\n else {\n i18n_55 = $localize `:@@ngb.progressbar.value␟f8e9a947b9db4252c0e9905765338712f2fd032f␟3720830768741091151:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[\"role\", \"progressbar\", \"aria-valuemin\", \"0\"], [4, \"ngIf\"], i18n_55]; }, template: function NgbProgressbar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbProgressbar_span_1_Template, 3, 3, \"span\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMapInterpolate4(\"progress-bar\", ctx.type ? \" bg-\" + ctx.type : \"\", \"\", ctx.textType ? \" text-\" + ctx.textType : \"\", \"\\n \", ctx.animated ? \" progress-bar-animated\" : \"\", \"\", ctx.striped ? \" progress-bar-striped\" : \"\", \"\");\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.getPercentValue(), \"%\");\n ɵngcc0.ɵɵattribute(\"aria-valuenow\", ctx.getValue())(\"aria-valuemax\", ctx.max);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showValue);\n } }, directives: [ɵngcc1.NgIf], pipes: [ɵngcc1.PercentPipe], encapsulation: 2, changeDetection: 0 });\nNgbProgressbar.ctorParameters = () => [\n { type: NgbProgressbarConfig }\n];\nNgbProgressbar.propDecorators = {\n max: [{ type: Input }],\n animated: [{ type: Input }],\n striped: [{ type: Input }],\n showValue: [{ type: Input }],\n textType: [{ type: Input }],\n type: [{ type: Input }],\n value: [{ type: Input }],\n height: [{ type: Input }, { type: HostBinding, args: ['style.height',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbar, [{\n type: Component,\n args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'progress' },\n template: `\n
    \n {{getValue() / max | percent}}\n
    \n `\n }]\n }], function () { return [{ type: NgbProgressbarConfig }]; }, { value: [{\n type: Input\n }], max: [{\n type: Input\n }], animated: [{\n type: Input\n }], striped: [{\n type: Input\n }], textType: [{\n type: Input\n }], type: [{\n type: Input\n }], showValue: [{\n type: Input\n }], height: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height']\n }] }); })();\n\nclass NgbProgressbarModule {\n}\nNgbProgressbarModule.ɵfac = function NgbProgressbarModule_Factory(t) { return new (t || NgbProgressbarModule)(); };\nNgbProgressbarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbProgressbarModule });\nNgbProgressbarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarModule, [{\n type: NgModule,\n args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbProgressbarModule, { declarations: function () { return [NgbProgressbar]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbProgressbar]; } }); })();\n\n/**\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the ratings used in the application.\n */\nclass NgbRatingConfig {\n constructor() {\n this.max = 10;\n this.readonly = false;\n this.resettable = false;\n }\n}\nNgbRatingConfig.ɵfac = function NgbRatingConfig_Factory(t) { return new (t || NgbRatingConfig)(); };\nNgbRatingConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * A directive that helps visualising and interacting with a star rating bar.\n */\nclass NgbRating {\n constructor(config, _changeDetectorRef) {\n this._changeDetectorRef = _changeDetectorRef;\n this.contexts = [];\n this.disabled = false;\n /**\n * An event emitted when the user is hovering over a given rating.\n *\n * Event payload equals to the rating being hovered over.\n */\n this.hover = new EventEmitter();\n /**\n * An event emitted when the user stops hovering over a given rating.\n *\n * Event payload equals to the rating of the last item being hovered over.\n */\n this.leave = new EventEmitter();\n /**\n * An event emitted when the user selects a new rating.\n *\n * Event payload equals to the newly selected rating.\n */\n this.rateChange = new EventEmitter(true);\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.max = config.max;\n this.readonly = config.readonly;\n }\n ariaValueText() { return `${this.nextRate} out of ${this.max}`; }\n isInteractive() { return !this.readonly && !this.disabled; }\n enter(value) {\n if (this.isInteractive()) {\n this._updateState(value);\n }\n this.hover.emit(value);\n }\n handleBlur() { this.onTouched(); }\n handleClick(value) {\n if (this.isInteractive()) {\n this.update(this.resettable && this.rate === value ? 0 : value);\n }\n }\n handleKeyDown(event) {\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n case Key.ArrowLeft:\n this.update(this.rate - 1);\n break;\n case Key.ArrowUp:\n case Key.ArrowRight:\n this.update(this.rate + 1);\n break;\n case Key.Home:\n this.update(0);\n break;\n case Key.End:\n this.update(this.max);\n break;\n default:\n return;\n }\n // note 'return' in default case\n event.preventDefault();\n }\n ngOnChanges(changes) {\n if (changes['rate']) {\n this.update(this.rate);\n }\n }\n ngOnInit() {\n this.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k }));\n this._updateState(this.rate);\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n reset() {\n this.leave.emit(this.nextRate);\n this._updateState(this.rate);\n }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n update(value, internalChange = true) {\n const newRate = getValueInRange(value, this.max, 0);\n if (this.isInteractive() && this.rate !== newRate) {\n this.rate = newRate;\n this.rateChange.emit(this.rate);\n }\n if (internalChange) {\n this.onChange(this.rate);\n this.onTouched();\n }\n this._updateState(this.rate);\n }\n writeValue(value) {\n this.update(value, false);\n this._changeDetectorRef.markForCheck();\n }\n _updateState(nextValue) {\n this.nextRate = nextValue;\n this.contexts.forEach((context, index) => context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100));\n }\n}\nNgbRating.ɵfac = function NgbRating_Factory(t) { return new (t || NgbRating)(ɵngcc0.ɵɵdirectiveInject(NgbRatingConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRating.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbRating, selectors: [[\"ngb-rating\"]], contentQueries: function NgbRating_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.starTemplateFromContent = _t.first);\n } }, hostAttrs: [\"role\", \"slider\", \"aria-valuemin\", \"0\", 1, \"d-inline-flex\"], hostVars: 5, hostBindings: function NgbRating_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbRating_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbRating_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); })(\"mouseleave\", function NgbRating_mouseleave_HostBindingHandler() { return ctx.reset(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"tabindex\", ctx.disabled ? -1 : 0);\n ɵngcc0.ɵɵattribute(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.nextRate)(\"aria-valuetext\", ctx.ariaValueText())(\"aria-disabled\", ctx.readonly ? true : null);\n } }, inputs: { max: \"max\", readonly: \"readonly\", rate: \"rate\", resettable: \"resettable\", starTemplate: \"starTemplate\" }, outputs: { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [[\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"sr-only\"], [3, \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbRating_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbRating_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbRating_ng_template_2_Template, 4, 5, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.contexts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\nNgbRating.ctorParameters = () => [\n { type: NgbRatingConfig },\n { type: ChangeDetectorRef }\n];\nNgbRating.propDecorators = {\n max: [{ type: Input }],\n rate: [{ type: Input }],\n readonly: [{ type: Input }],\n resettable: [{ type: Input }],\n starTemplate: [{ type: Input }],\n starTemplateFromContent: [{ type: ContentChild, args: [TemplateRef, { static: false },] }],\n hover: [{ type: Output }],\n leave: [{ type: Output }],\n rateChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRating, [{\n type: Component,\n args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'd-inline-flex',\n '[tabindex]': 'disabled ? -1 : 0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: `\n {{ fill === 100 ? '★' : '☆' }}\n \n ({{ index < nextRate ? '*' : ' ' }})\n \n \n \n \n \n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }]\n }]\n }], function () { return [{ type: NgbRatingConfig }, { type: ɵngcc0.ChangeDetectorRef }]; }, { hover: [{\n type: Output\n }], leave: [{\n type: Output\n }], rateChange: [{\n type: Output\n }], max: [{\n type: Input\n }], readonly: [{\n type: Input\n }], rate: [{\n type: Input\n }], resettable: [{\n type: Input\n }], starTemplate: [{\n type: Input\n }], starTemplateFromContent: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] }); })();\n\nclass NgbRatingModule {\n}\nNgbRatingModule.ɵfac = function NgbRatingModule_Factory(t) { return new (t || NgbRatingModule)(); };\nNgbRatingModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbRatingModule });\nNgbRatingModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingModule, [{\n type: NgModule,\n args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbRatingModule, { declarations: function () { return [NgbRating]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbRating]; } }); })();\n\nclass NgbTime {\n constructor(hour, minute, second) {\n this.hour = toInteger(hour);\n this.minute = toInteger(minute);\n this.second = toInteger(second);\n }\n changeHour(step = 1) { this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step); }\n updateHour(hour) {\n if (isNumber(hour)) {\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\n }\n else {\n this.hour = NaN;\n }\n }\n changeMinute(step = 1) { this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step); }\n updateMinute(minute) {\n if (isNumber(minute)) {\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\n this.changeHour(Math.floor(minute / 60));\n }\n else {\n this.minute = NaN;\n }\n }\n changeSecond(step = 1) { this.updateSecond((isNaN(this.second) ? 0 : this.second) + step); }\n updateSecond(second) {\n if (isNumber(second)) {\n this.second = second < 0 ? 60 + second % 60 : second % 60;\n this.changeMinute(Math.floor(second / 60));\n }\n else {\n this.second = NaN;\n }\n }\n isValid(checkSecs = true) {\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\n }\n toString() { return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`; }\n}\n\n/**\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the timepickers used in the application.\n */\nclass NgbTimepickerConfig {\n constructor() {\n this.meridian = false;\n this.spinners = true;\n this.seconds = false;\n this.hourStep = 1;\n this.minuteStep = 1;\n this.secondStep = 1;\n this.disabled = false;\n this.readonlyInputs = false;\n this.size = 'medium';\n }\n}\nNgbTimepickerConfig.ɵfac = function NgbTimepickerConfig_Factory(t) { return new (t || NgbTimepickerConfig)(); };\nNgbTimepickerConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\n return new NgbTimeStructAdapter();\n}\n/**\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\n * any provided user time model `T`, ex. a string, a native date, etc.\n *\n * The adapter is used **only** for conversion when binding timepicker to a form control,\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\n *\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\n *\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\n *\n * @since 2.2.0\n */\nclass NgbTimeAdapter {\n}\nNgbTimeAdapter.ɵfac = function NgbTimeAdapter_Factory(t) { return new (t || NgbTimeAdapter)(); };\nNgbTimeAdapter.ɵprov = i0.ɵɵdefineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY }]\n }], null, null); })();\nclass NgbTimeStructAdapter extends NgbTimeAdapter {\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n fromModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n /**\n * Converts a NgbTimeStruct value into NgbTimeStruct value\n */\n toModel(time) {\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\n null;\n }\n}\nNgbTimeStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbTimeStructAdapter_BaseFactory; return function NgbTimeStructAdapter_Factory(t) { return (ɵNgbTimeStructAdapter_BaseFactory || (ɵNgbTimeStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbTimeStructAdapter)))(t || NgbTimeStructAdapter); }; }();\nNgbTimeStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimeStructAdapter, factory: NgbTimeStructAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\n return new NgbTimepickerI18nDefault(locale);\n}\n/**\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\n * as explained in the Angular i18n guide.\n */\nclass NgbTimepickerI18n {\n}\nNgbTimepickerI18n.ɵfac = function NgbTimepickerI18n_Factory(t) { return new (t || NgbTimepickerI18n)(); };\nNgbTimepickerI18n.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbTimepickerI18n_Factory() { return NGB_TIMEPICKER_I18N_FACTORY(i0.ɵɵinject(i0.LOCALE_ID)); }, token: NgbTimepickerI18n, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\nclass NgbTimepickerI18nDefault extends NgbTimepickerI18n {\n constructor(locale) {\n super();\n this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\n }\n getMorningPeriod() { return this._periods[0]; }\n getAfternoonPeriod() { return this._periods[1]; }\n}\nNgbTimepickerI18nDefault.ɵfac = function NgbTimepickerI18nDefault_Factory(t) { return new (t || NgbTimepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbTimepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimepickerI18nDefault, factory: NgbTimepickerI18nDefault.ɵfac });\nNgbTimepickerI18nDefault.ctorParameters = () => [\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\nconst FILTER_REGEX = /[^0-9]/g;\n/**\n * A directive that helps with wth picking hours, minutes and seconds.\n */\nclass NgbTimepicker {\n constructor(_config, _ngbTimeAdapter, _cd, i18n) {\n this._config = _config;\n this._ngbTimeAdapter = _ngbTimeAdapter;\n this._cd = _cd;\n this.i18n = i18n;\n this.onChange = (_) => { };\n this.onTouched = () => { };\n this.meridian = _config.meridian;\n this.spinners = _config.spinners;\n this.seconds = _config.seconds;\n this.hourStep = _config.hourStep;\n this.minuteStep = _config.minuteStep;\n this.secondStep = _config.secondStep;\n this.disabled = _config.disabled;\n this.readonlyInputs = _config.readonlyInputs;\n this.size = _config.size;\n }\n /**\n * The number of hours to add/subtract when clicking hour spinners.\n */\n set hourStep(step) {\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\n }\n get hourStep() { return this._hourStep; }\n /**\n * The number of minutes to add/subtract when clicking minute spinners.\n */\n set minuteStep(step) {\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\n }\n get minuteStep() { return this._minuteStep; }\n /**\n * The number of seconds to add/subtract when clicking second spinners.\n */\n set secondStep(step) {\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\n }\n get secondStep() { return this._secondStep; }\n writeValue(value) {\n const structValue = this._ngbTimeAdapter.fromModel(value);\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\n this.model.second = 0;\n }\n this._cd.markForCheck();\n }\n registerOnChange(fn) { this.onChange = fn; }\n registerOnTouched(fn) { this.onTouched = fn; }\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\n changeHour(step) {\n this.model.changeHour(step);\n this.propagateModelChange();\n }\n changeMinute(step) {\n this.model.changeMinute(step);\n this.propagateModelChange();\n }\n changeSecond(step) {\n this.model.changeSecond(step);\n this.propagateModelChange();\n }\n updateHour(newVal) {\n const isPM = this.model.hour >= 12;\n const enteredHour = toInteger(newVal);\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\n this.model.updateHour(enteredHour + 12);\n }\n else {\n this.model.updateHour(enteredHour);\n }\n this.propagateModelChange();\n }\n updateMinute(newVal) {\n this.model.updateMinute(toInteger(newVal));\n this.propagateModelChange();\n }\n updateSecond(newVal) {\n this.model.updateSecond(toInteger(newVal));\n this.propagateModelChange();\n }\n toggleMeridian() {\n if (this.meridian) {\n this.changeHour(12);\n }\n }\n formatInput(input) { input.value = input.value.replace(FILTER_REGEX, ''); }\n formatHour(value) {\n if (isNumber(value)) {\n if (this.meridian) {\n return padNumber(value % 12 === 0 ? 12 : value % 12);\n }\n else {\n return padNumber(value % 24);\n }\n }\n else {\n return padNumber(NaN);\n }\n }\n formatMinSec(value) { return padNumber(isNumber(value) ? value : NaN); }\n handleBlur() { this.onTouched(); }\n get isSmallSize() { return this.size === 'small'; }\n get isLargeSize() { return this.size === 'large'; }\n ngOnChanges(changes) {\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\n this.model.second = 0;\n this.propagateModelChange(false);\n }\n }\n propagateModelChange(touched = true) {\n if (touched) {\n this.onTouched();\n }\n if (this.model.isValid(this.seconds)) {\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\n }\n else {\n this.onChange(this._ngbTimeAdapter.toModel(null));\n }\n }\n}\nNgbTimepicker.ɵfac = function NgbTimepicker_Factory(t) { return new (t || NgbTimepicker)(ɵngcc0.ɵɵdirectiveInject(NgbTimepickerConfig), ɵngcc0.ɵɵdirectiveInject(NgbTimeAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbTimepickerI18n)); };\nNgbTimepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTimepicker, selectors: [[\"ngb-timepicker\"]], inputs: { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 16, vars: 25, consts: function () { let i18n_57; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58 = goog.getMsg(\"HH\");\n i18n_57 = MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58;\n }\n else {\n i18n_57 = $localize `:@@ngb.timepicker.HH␟ce676ab1d6d98f85c836381cf100a4a91ef95a1f␟4043638465245303811:HH`;\n } let i18n_59; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60 = goog.getMsg(\"Hours\");\n i18n_59 = MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60;\n }\n else {\n i18n_59 = $localize `:@@ngb.timepicker.hours␟3bbce5fef7e1151da052a4e529453edb340e3912␟8070396816726827304:Hours`;\n } let i18n_61; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62 = goog.getMsg(\"MM\");\n i18n_61 = MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62;\n }\n else {\n i18n_61 = $localize `:@@ngb.timepicker.MM␟72c8edf6a50068a05bde70991e36b1e881f4ca54␟1647282246509919852:MM`;\n } let i18n_63; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64 = goog.getMsg(\"Minutes\");\n i18n_63 = MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64;\n }\n else {\n i18n_63 = $localize `:@@ngb.timepicker.minutes␟41e62daa962947c0d23ded0981975d1bddf0bf38␟5531237363767747080:Minutes`;\n } let i18n_65; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66 = goog.getMsg(\"Increment hours\");\n i18n_65 = MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66;\n }\n else {\n i18n_65 = $localize `:@@ngb.timepicker.increment-hours␟cb74bc1d625a6c1742f0d7d47306cf495780c218␟5939278348542933629:Increment hours`;\n } let i18n_67; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68 = goog.getMsg(\"Decrement hours\");\n i18n_67 = MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68;\n }\n else {\n i18n_67 = $localize `:@@ngb.timepicker.decrement-hours␟147c7a19429da7d999e247d22e33fee370b1691b␟3651829882940481818:Decrement hours`;\n } let i18n_69; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70 = goog.getMsg(\"Increment minutes\");\n i18n_69 = MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70;\n }\n else {\n i18n_69 = $localize `:@@ngb.timepicker.increment-minutes␟f5a4a3bc05e053f6732475d0e74875ec01c3a348␟180147720391025024:Increment minutes`;\n } let i18n_71; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72 = goog.getMsg(\"Decrement minutes\");\n i18n_71 = MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72;\n }\n else {\n i18n_71 = $localize `:@@ngb.timepicker.decrement-minutes␟c1a6899e529c096da5b660385d4e77fe1f7ad271␟7447789825403243588:Decrement minutes`;\n } let i18n_73; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74 = goog.getMsg(\"SS\");\n i18n_73 = MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74;\n }\n else {\n i18n_73 = $localize `:@@ngb.timepicker.SS␟ebe38d36a40a2383c5fefa9b4608ffbda08bd4a3␟3628127143071124194:SS`;\n } let i18n_75; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76 = goog.getMsg(\"Seconds\");\n i18n_75 = MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76;\n }\n else {\n i18n_75 = $localize `:@@ngb.timepicker.seconds␟4f2ed9e71a7c981db3e50ae2fedb28aff2ec4e6c␟8874012390997067175:Seconds`;\n } let i18n_77; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78 = goog.getMsg(\"Increment seconds\");\n i18n_77 = MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78;\n }\n else {\n i18n_77 = $localize `:@@ngb.timepicker.increment-seconds␟912322ecee7d659d04dcf494a70e22e49d334b26␟5364772110539092174:Increment seconds`;\n } let i18n_79; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80 = goog.getMsg(\"Decrement seconds\");\n i18n_79 = MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80;\n }\n else {\n i18n_79 = $localize `:@@ngb.timepicker.decrement-seconds␟5db47ac104294243a70eb9124fbea9d0004ddf69␟753633511487974857:Decrement seconds`;\n } let i18n_81; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_81 = MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82;\n }\n else {\n i18n_81 = $localize `:@@ngb.timepicker.PM␟8d6e691e10306c1b34c6b26805151aaea320ef7f␟3564199131264287502:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_83; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_83 = MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84;\n }\n else {\n i18n_83 = $localize `:@@ngb.timepicker.AM␟69a1f176a93998876952adac57c3bc3863b6105e␟4592818992509942761:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[3, \"disabled\"], [1, \"ngb-tp\"], [1, \"ngb-tp-input-container\", \"ngb-tp-hour\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"class\", \"btn btn-link\", 3, \"btn-sm\", \"btn-lg\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_57, \"aria-label\", i18n_59, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [1, \"ngb-tp-spacer\"], [1, \"ngb-tp-input-container\", \"ngb-tp-minute\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_61, \"aria-label\", i18n_63, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [\"class\", \"ngb-tp-spacer\", 4, \"ngIf\"], [\"class\", \"ngb-tp-input-container ngb-tp-second\", 4, \"ngIf\"], [\"class\", \"ngb-tp-meridian\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"disabled\", \"click\"], [1, \"chevron\", \"ngb-tp-chevron\"], [1, \"sr-only\"], i18n_65, [1, \"chevron\", \"ngb-tp-chevron\", \"bottom\"], i18n_67, i18n_69, i18n_71, [1, \"ngb-tp-input-container\", \"ngb-tp-second\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_73, \"aria-label\", i18n_75, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], i18n_77, i18n_79, [1, \"ngb-tp-meridian\"], [\"type\", \"button\", 1, \"btn\", \"btn-outline-primary\", 3, \"disabled\", \"click\"], [4, \"ngIf\", \"ngIfElse\"], [\"am\", \"\"], i18n_81, i18n_83]; }, template: function NgbTimepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"fieldset\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(4, \"input\", 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_4_listener($event) { return ctx.updateHour($event.target.value); })(\"blur\", function NgbTimepicker_Template_input_blur_4_listener() { return ctx.handleBlur(); })(\"input\", function NgbTimepicker_Template_input_input_4_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_4_listener($event) { ctx.changeHour(ctx.hourStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_4_listener($event) { ctx.changeHour(-ctx.hourStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, NgbTimepicker_button_5_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵtext(7, \":\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n ɵngcc0.ɵɵtemplate(9, NgbTimepicker_button_9_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(10, \"input\", 7);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_10_listener($event) { return ctx.updateMinute($event.target.value); })(\"blur\", function NgbTimepicker_Template_input_blur_10_listener() { return ctx.handleBlur(); })(\"input\", function NgbTimepicker_Template_input_input_10_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_10_listener($event) { ctx.changeMinute(ctx.minuteStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_10_listener($event) { ctx.changeMinute(-ctx.minuteStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, NgbTimepicker_button_11_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(12, NgbTimepicker_div_12_Template, 2, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(13, NgbTimepicker_div_13_Template, 4, 9, \"div\", 9);\n ɵngcc0.ɵɵtemplate(14, NgbTimepicker_div_14_Template, 1, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(15, NgbTimepicker_div_15_Template, 5, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatHour(ctx.model == null ? null : ctx.model.hour))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatMinSec(ctx.model == null ? null : ctx.model.minute))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"], encapsulation: 2 });\nNgbTimepicker.ctorParameters = () => [\n { type: NgbTimepickerConfig },\n { type: NgbTimeAdapter },\n { type: ChangeDetectorRef },\n { type: NgbTimepickerI18n }\n];\nNgbTimepicker.propDecorators = {\n meridian: [{ type: Input }],\n spinners: [{ type: Input }],\n seconds: [{ type: Input }],\n hourStep: [{ type: Input }],\n minuteStep: [{ type: Input }],\n secondStep: [{ type: Input }],\n readonlyInputs: [{ type: Input }],\n size: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepicker, [{\n type: Component,\n args: [{\n selector: 'ngb-timepicker',\n encapsulation: ViewEncapsulation.None,\n template: `\n
    \n
    \n
    \n \n \n \n
    \n
    :
    \n
    \n \n \n \n
    \n
    :
    \n
    \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }],\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{display:flex;align-items:center}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{display:flex;flex-direction:column;align-items:center;justify-content:space-around}.ngb-tp-spacer{width:1em;text-align:center}\"]\n }]\n }], function () { return [{ type: NgbTimepickerConfig }, { type: NgbTimeAdapter }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbTimepickerI18n }]; }, { meridian: [{\n type: Input\n }], spinners: [{\n type: Input\n }], seconds: [{\n type: Input\n }], hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondStep: [{\n type: Input\n }], readonlyInputs: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n\nclass NgbTimepickerModule {\n}\nNgbTimepickerModule.ɵfac = function NgbTimepickerModule_Factory(t) { return new (t || NgbTimepickerModule)(); };\nNgbTimepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTimepickerModule });\nNgbTimepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTimepickerModule, { declarations: function () { return [NgbTimepicker]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTimepicker]; } }); })();\n\n/**\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\n * and customize the values of its properties in order to provide default values for all the toasts used in the\n * application.\n *\n * @since 5.0.0\n */\nclass NgbToastConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autohide = true;\n this.delay = 500;\n this.ariaLive = 'polite';\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbToastConfig.ɵfac = function NgbToastConfig_Factory(t) { return new (t || NgbToastConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbToastConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbToastConfig_Factory() { return new NgbToastConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbToastConfig, providedIn: \"root\" });\nNgbToastConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst ngbToastFadeInTransition = (element, animation) => {\n const { classList } = element;\n if (!animation) {\n classList.add('show');\n return;\n }\n classList.remove('hide');\n reflow(element);\n classList.add('showing');\n return () => {\n classList.remove('showing');\n classList.add('show');\n };\n};\nconst ngbToastFadeOutTransition = ({ classList }) => {\n classList.remove('show');\n return () => { classList.add('hide'); };\n};\n\n/**\n * This directive allows the usage of HTML markup or other directives\n * inside of the toast's header.\n *\n * @since 5.0.0\n */\nclass NgbToastHeader {\n}\nNgbToastHeader.ɵfac = function NgbToastHeader_Factory(t) { return new (t || NgbToastHeader)(); };\nNgbToastHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbToastHeader, selectors: [[\"\", \"ngbToastHeader\", \"\"]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastHeader, [{\n type: Directive,\n args: [{ selector: '[ngbToastHeader]' }]\n }], null, null); })();\n/**\n * Toasts provide feedback messages as notifications to the user.\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\n *\n * @since 5.0.0\n */\nclass NgbToast {\n constructor(ariaLive, config, _zone, _element) {\n this.ariaLive = ariaLive;\n this._zone = _zone;\n this._element = _element;\n /**\n * A template like `` can be\n * used in the projected content to allow markup usage.\n */\n this.contentHeaderTpl = null;\n /**\n * An event fired after the animation triggered by calling `.show()` method has finished.\n *\n * @since 8.0.0\n */\n this.shown = new EventEmitter();\n /**\n * An event fired after the animation triggered by calling `.hide()` method has finished.\n *\n * It can only occur in 2 different scenarios:\n * - `autohide` timeout fires\n * - user clicks on a closing cross\n *\n * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\n * to the user to take care of that.\n *\n * @since 8.0.0\n */\n this.hidden = new EventEmitter();\n if (this.ariaLive == null) {\n this.ariaLive = config.ariaLive;\n }\n this.delay = config.delay;\n this.autohide = config.autohide;\n this.animation = config.animation;\n }\n ngAfterContentInit() {\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this._init();\n this.show();\n });\n }\n ngOnChanges(changes) {\n if ('autohide' in changes) {\n this._clearTimeout();\n this._init();\n }\n }\n /**\n * Triggers toast closing programmatically.\n *\n * The returned observable will emit and be completed once the closing transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(hidden)` output\n *\n * @since 8.0.0\n */\n hide() {\n this._clearTimeout();\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, { animation: this.animation, runningTransition: 'stop' });\n transition.subscribe(() => { this.hidden.emit(); });\n return transition;\n }\n /**\n * Triggers toast opening programmatically.\n *\n * The returned observable will emit and be completed once the opening transition has finished.\n * If the animations are turned off this happens synchronously.\n *\n * Alternatively you could listen or subscribe to the `(shown)` output\n *\n * @since 8.0.0\n */\n show() {\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\n animation: this.animation,\n runningTransition: 'continue',\n });\n transition.subscribe(() => { this.shown.emit(); });\n return transition;\n }\n _init() {\n if (this.autohide && !this._timeoutID) {\n this._timeoutID = setTimeout(() => this.hide(), this.delay);\n }\n }\n _clearTimeout() {\n if (this._timeoutID) {\n clearTimeout(this._timeoutID);\n this._timeoutID = null;\n }\n }\n}\nNgbToast.ɵfac = function NgbToast_Factory(t) { return new (t || NgbToast)(ɵngcc0.ɵɵinjectAttribute('aria-live'), ɵngcc0.ɵɵdirectiveInject(NgbToastConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbToast.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbToast, selectors: [[\"ngb-toast\"]], contentQueries: function NgbToast_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbToastHeader, 7, TemplateRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentHeaderTpl = _t.first);\n } }, hostAttrs: [\"role\", \"alert\", \"aria-atomic\", \"true\", 1, \"toast\"], hostVars: 3, hostBindings: function NgbToast_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-live\", ctx.ariaLive);\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { delay: \"delay\", autohide: \"autohide\", animation: \"animation\", header: \"header\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbToast\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 5, vars: 1, consts: function () { let i18n_85; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n const MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86 = goog.getMsg(\"Close\");\n i18n_85 = MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86;\n }\n else {\n i18n_85 = $localize `:@@ngb.toast.close-aria␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"headerTpl\", \"\"], [3, \"ngIf\"], [1, \"toast-body\"], [1, \"mr-auto\"], [1, \"toast-header\"], [3, \"ngTemplateOutlet\"], [\"type\", \"button\", \"aria-label\", i18n_85, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbToast_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgbToast_ng_template_0_Template, 2, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbToast_ng_template_2_Template, 5, 1, \"ng-template\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentHeaderTpl || ctx.header);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"], encapsulation: 2 });\nNgbToast.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['aria-live',] }] },\n { type: NgbToastConfig },\n { type: NgZone },\n { type: ElementRef }\n];\nNgbToast.propDecorators = {\n animation: [{ type: Input }],\n delay: [{ type: Input }],\n autohide: [{ type: Input }],\n header: [{ type: Input }],\n contentHeaderTpl: [{ type: ContentChild, args: [NgbToastHeader, { read: TemplateRef, static: true },] }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToast, [{\n type: Component,\n args: [{\n selector: 'ngb-toast',\n exportAs: 'ngbToast',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'role': 'alert',\n '[attr.aria-live]': 'ariaLive',\n 'aria-atomic': 'true',\n 'class': 'toast',\n '[class.fade]': 'animation'\n },\n template: `\n \n {{header}}\n \n \n
    \n \n \n
    \n
    \n
    \n \n
    \n `,\n styles: [\".ngb-toasts{position:fixed;top:0;right:0;margin:.5em;z-index:1200}ngb-toast{display:block}ngb-toast .toast-header .close{margin-left:auto;margin-bottom:.25rem}\"]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: NgbToastConfig }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }]; }, { contentHeaderTpl: [{\n type: ContentChild,\n args: [NgbToastHeader, { read: TemplateRef, static: true }]\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], delay: [{\n type: Input\n }], autohide: [{\n type: Input\n }], animation: [{\n type: Input\n }], header: [{\n type: Input\n }] }); })();\n\nclass NgbToastModule {\n}\nNgbToastModule.ɵfac = function NgbToastModule_Factory(t) { return new (t || NgbToastModule)(); };\nNgbToastModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbToastModule });\nNgbToastModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastModule, [{\n type: NgModule,\n args: [{ declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbToastModule, { declarations: function () { return [NgbToast, NgbToastHeader]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbToast, NgbToastHeader]; } }); })();\n\n/**\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the tooltips used in the application.\n */\nclass NgbTooltipConfig {\n constructor(_ngbConfig) {\n this._ngbConfig = _ngbConfig;\n this.autoClose = true;\n this.placement = 'auto';\n this.triggers = 'hover focus';\n this.disableTooltip = false;\n this.openDelay = 0;\n this.closeDelay = 0;\n }\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\n set animation(animation) { this._animation = animation; }\n}\nNgbTooltipConfig.ɵfac = function NgbTooltipConfig_Factory(t) { return new (t || NgbTooltipConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\nNgbTooltipConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(i0.ɵɵinject(NgbConfig)); }, token: NgbTooltipConfig, providedIn: \"root\" });\nNgbTooltipConfig.ctorParameters = () => [\n { type: NgbConfig }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nlet nextId = 0;\nclass NgbTooltipWindow {\n}\nNgbTooltipWindow.ɵfac = function NgbTooltipWindow_Factory(t) { return new (t || NgbTooltipWindow)(); };\nNgbTooltipWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTooltipWindow, selectors: [[\"ngb-tooltip-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 5, hostBindings: function NgbTooltipWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"tooltip\" + (ctx.tooltipClass ? \" \" + ctx.tooltipClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", id: \"id\", tooltipClass: \"tooltipClass\" }, ngContentSelectors: _c3, decls: 3, vars: 0, consts: [[1, \"arrow\"], [1, \"tooltip-inner\"]], template: function NgbTooltipWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } }, styles: [\"ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"], encapsulation: 2, changeDetection: 0 });\nNgbTooltipWindow.propDecorators = {\n animation: [{ type: Input }],\n id: [{ type: Input }],\n tooltipClass: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"tooltip\" + (tooltipClass ? \" \" + tooltipClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `
    `,\n styles: [\"ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{top:auto;bottom:.4rem}\"]\n }]\n }], null, { animation: [{\n type: Input\n }], id: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }] }); })();\n/**\n * A lightweight and extensible directive for fancy tooltip creation.\n */\nclass NgbTooltip {\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._ngZone = _ngZone;\n this._document = _document;\n this._changeDetector = _changeDetector;\n /**\n * An event emitted when the tooltip opening animation has finished. Contains no payload.\n */\n this.shown = new EventEmitter();\n /**\n * An event emitted when the tooltip closing animation has finished. Contains no payload.\n */\n this.hidden = new EventEmitter();\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId++}`;\n this._windowRef = null;\n this.animation = config.animation;\n this.autoClose = config.autoClose;\n this.placement = config.placement;\n this.triggers = config.triggers;\n this.container = config.container;\n this.disableTooltip = config.disableTooltip;\n this.tooltipClass = config.tooltipClass;\n this.openDelay = config.openDelay;\n this.closeDelay = config.closeDelay;\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\n if (this._windowRef) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-tooltip');\n }\n });\n }\n /**\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\n *\n * If the content if falsy, the tooltip won't open.\n */\n set ngbTooltip(value) {\n this._ngbTooltip = value;\n if (!value && this._windowRef) {\n this.close();\n }\n }\n get ngbTooltip() { return this._ngbTooltip; }\n /**\n * Opens the tooltip.\n *\n * This is considered to be a \"manual\" triggering.\n * The `context` is an optional value to be injected into the tooltip template when it is created.\n */\n open(context) {\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\n const { windowRef, transition$ } = this._popupService.open(this._ngbTooltip, context, this.animation);\n this._windowRef = windowRef;\n this._windowRef.instance.animation = this.animation;\n this._windowRef.instance.tooltipClass = this.tooltipClass;\n this._windowRef.instance.id = this._ngbTooltipWindowId;\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n // We need to detect changes, because we don't know where .open() might be called from.\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\n this._windowRef.changeDetectorRef.detectChanges();\n // We need to mark for check, because tooltip won't work inside the OnPush component.\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\n // inside the template of an OnPush component and we change the tooltip from\n // open -> closed, the expression in question won't be updated unless we explicitly\n // mark the parent component to be checked.\n this._windowRef.changeDetectorRef.markForCheck();\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\n transition$.subscribe(() => this.shown.emit());\n }\n }\n /**\n * Closes the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n close() {\n if (this._windowRef != null) {\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\n this._popupService.close(this.animation).subscribe(() => {\n this._windowRef = null;\n this.hidden.emit();\n this._changeDetector.markForCheck();\n });\n }\n }\n /**\n * Toggles the tooltip.\n *\n * This is considered to be a \"manual\" triggering of the tooltip.\n */\n toggle() {\n if (this._windowRef) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * Returns `true`, if the popover is currently shown.\n */\n isOpen() { return this._windowRef != null; }\n ngOnInit() {\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\n }\n ngOnChanges({ tooltipClass }) {\n if (tooltipClass && this.isOpen()) {\n this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\n }\n }\n ngOnDestroy() {\n this.close();\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\n if (this._unregisterListenersFn) {\n this._unregisterListenersFn();\n }\n this._zoneSubscription.unsubscribe();\n }\n}\nNgbTooltip.ɵfac = function NgbTooltip_Factory(t) { return new (t || NgbTooltip)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbTooltipConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTooltip.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTooltip, selectors: [[\"\", \"ngbTooltip\", \"\"]], inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disableTooltip: \"disableTooltip\", tooltipClass: \"tooltipClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbTooltip: \"ngbTooltip\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbTooltip\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbTooltip.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: NgbTooltipConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\nNgbTooltip.propDecorators = {\n animation: [{ type: Input }],\n autoClose: [{ type: Input }],\n placement: [{ type: Input }],\n triggers: [{ type: Input }],\n container: [{ type: Input }],\n disableTooltip: [{ type: Input }],\n tooltipClass: [{ type: Input }],\n openDelay: [{ type: Input }],\n closeDelay: [{ type: Input }],\n shown: [{ type: Output }],\n hidden: [{ type: Output }],\n ngbTooltip: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltip, [{\n type: Directive,\n args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbTooltipConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disableTooltip: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbTooltip: [{\n type: Input\n }] }); })();\n\nclass NgbTooltipModule {\n}\nNgbTooltipModule.ɵfac = function NgbTooltipModule_Factory(t) { return new (t || NgbTooltipModule)(); };\nNgbTooltipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTooltipModule });\nNgbTooltipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTooltipModule, { declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] }); })();\n\n/**\n * A component that helps with text highlighting.\n *\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\n * highlighting:\n *\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\n */\nclass NgbHighlight {\n constructor() {\n /**\n * The CSS class for `` elements wrapping the `term` inside the `result`.\n */\n this.highlightClass = 'ngb-highlight';\n /**\n * Boolean option to determine if the highlighting should be sensitive to accents or not.\n *\n * This feature is only available for browsers that implement the `String.normalize` function\n * (typically not Internet Explorer).\n * If you want to use this feature in a browser that does not implement `String.normalize`,\n * you will have to include a polyfill in your application (`unorm` for example).\n *\n * @since 9.1.0\n */\n this.accentSensitive = true;\n }\n ngOnChanges(changes) {\n if (!this.accentSensitive && !String.prototype.normalize) {\n console.warn('The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' +\n 'that does not implement the `String.normalize` function. ' +\n 'You will have to include a polyfill in your application to use this feature in the current browser.');\n this.accentSensitive = true;\n }\n const result = toString(this.result);\n const terms = Array.isArray(this.term) ? this.term : [this.term];\n const prepareTerm = term => this.accentSensitive ? term : removeAccents(term);\n const escapedTerms = terms.map(term => regExpEscape(prepareTerm(toString(term)))).filter(term => term);\n const toSplit = this.accentSensitive ? result : removeAccents(result);\n const parts = escapedTerms.length ? toSplit.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\n if (this.accentSensitive) {\n this.parts = parts;\n }\n else {\n let offset = 0;\n this.parts = parts.map(part => result.substring(offset, offset += part.length));\n }\n }\n}\nNgbHighlight.ɵfac = function NgbHighlight_Factory(t) { return new (t || NgbHighlight)(); };\nNgbHighlight.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbHighlight, selectors: [[\"ngb-highlight\"]], inputs: { highlightClass: \"highlightClass\", accentSensitive: \"accentSensitive\", result: \"result\", term: \"term\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"class\", 4, \"ngIf\", \"ngIfElse\"], [\"even\", \"\"]], template: function NgbHighlight_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_Template, 3, 2, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.parts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], styles: [\".ngb-highlight{font-weight:700}\"], encapsulation: 2, changeDetection: 0 });\nNgbHighlight.propDecorators = {\n highlightClass: [{ type: Input }],\n result: [{ type: Input }],\n term: [{ type: Input }],\n accentSensitive: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbHighlight, [{\n type: Component,\n args: [{\n selector: 'ngb-highlight',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `` +\n `{{part}}{{part}}` +\n ``,\n styles: [\".ngb-highlight{font-weight:700}\"]\n }]\n }], function () { return []; }, { highlightClass: [{\n type: Input\n }], accentSensitive: [{\n type: Input\n }], result: [{\n type: Input\n }], term: [{\n type: Input\n }] }); })();\n\nclass NgbTypeaheadWindow {\n constructor() {\n this.activeIdx = 0;\n /**\n * Flag indicating if the first row should be active initially\n */\n this.focusFirst = true;\n /**\n * A function used to format a given result before display. This function should return a formatted string without any\n * HTML markup\n */\n this.formatter = toString;\n /**\n * Event raised when user selects a particular result row\n */\n this.selectEvent = new EventEmitter();\n this.activeChangeEvent = new EventEmitter();\n }\n hasActive() { return this.activeIdx > -1 && this.activeIdx < this.results.length; }\n getActive() { return this.results[this.activeIdx]; }\n markActive(activeIdx) {\n this.activeIdx = activeIdx;\n this._activeChanged();\n }\n next() {\n if (this.activeIdx === this.results.length - 1) {\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\n }\n else {\n this.activeIdx++;\n }\n this._activeChanged();\n }\n prev() {\n if (this.activeIdx < 0) {\n this.activeIdx = this.results.length - 1;\n }\n else if (this.activeIdx === 0) {\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\n }\n else {\n this.activeIdx--;\n }\n this._activeChanged();\n }\n resetActive() {\n this.activeIdx = this.focusFirst ? 0 : -1;\n this._activeChanged();\n }\n select(item) { this.selectEvent.emit(item); }\n ngOnInit() { this.resetActive(); }\n _activeChanged() {\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\n }\n}\nNgbTypeaheadWindow.ɵfac = function NgbTypeaheadWindow_Factory(t) { return new (t || NgbTypeaheadWindow)(); };\nNgbTypeaheadWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTypeaheadWindow, selectors: [[\"ngb-typeahead-window\"]], hostAttrs: [\"role\", \"listbox\"], hostVars: 3, hostBindings: function NgbTypeaheadWindow_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgbTypeaheadWindow_mousedown_HostBindingHandler($event) { return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"dropdown-menu show\" + (ctx.popupClass ? \" \" + ctx.popupClass : \"\"));\n } }, inputs: { focusFirst: \"focusFirst\", formatter: \"formatter\", id: \"id\", results: \"results\", term: \"term\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, exportAs: [\"ngbTypeaheadWindow\"], decls: 3, vars: 1, consts: [[\"rt\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"result\", \"term\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"id\", \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbTypeaheadWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbTypeaheadWindow_ng_template_0_Template, 1, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbTypeaheadWindow_ng_template_2_Template, 2, 9, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results);\n } }, directives: [ɵngcc1.NgForOf, NgbHighlight, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\nNgbTypeaheadWindow.propDecorators = {\n id: [{ type: Input }],\n focusFirst: [{ type: Input }],\n results: [{ type: Input }],\n term: [{ type: Input }],\n formatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n popupClass: [{ type: Input }],\n selectEvent: [{ type: Output, args: ['select',] }],\n activeChangeEvent: [{ type: Output, args: ['activeChange',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n encapsulation: ViewEncapsulation.None,\n host: {\n '(mousedown)': '$event.preventDefault()',\n '[class]': '\"dropdown-menu show\" + (popupClass ? \" \" + popupClass : \"\")',\n 'role': 'listbox',\n '[id]': 'id'\n },\n template: `\n \n \n \n \n \n \n `\n }]\n }], function () { return []; }, { focusFirst: [{\n type: Input\n }], formatter: [{\n type: Input\n }], selectEvent: [{\n type: Output,\n args: ['select']\n }], activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }], id: [{\n type: Input\n }], results: [{\n type: Input\n }], term: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }] }); })();\n\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\nfunction ARIA_LIVE_DELAY_FACTORY() {\n return 100;\n}\nfunction getLiveElement(document, lazyCreate = false) {\n let element = document.body.querySelector('#ngb-live');\n if (element == null && lazyCreate) {\n element = document.createElement('div');\n element.setAttribute('id', 'ngb-live');\n element.setAttribute('aria-live', 'polite');\n element.setAttribute('aria-atomic', 'true');\n element.classList.add('sr-only');\n document.body.appendChild(element);\n }\n return element;\n}\nclass Live {\n constructor(_document, _delay) {\n this._document = _document;\n this._delay = _delay;\n }\n ngOnDestroy() {\n const element = getLiveElement(this._document);\n if (element) {\n // if exists, it will always be attached to the \n element.parentElement.removeChild(element);\n }\n }\n say(message) {\n const element = getLiveElement(this._document, true);\n const delay = this._delay;\n if (element != null) {\n element.textContent = '';\n const setText = () => element.textContent = message;\n if (delay === null) {\n setText();\n }\n else {\n setTimeout(setText, delay);\n }\n }\n }\n}\nLive.ɵfac = function Live_Factory(t) { return new (t || Live)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ARIA_LIVE_DELAY)); };\nLive.ɵprov = i0.ɵɵdefineInjectable({ factory: function Live_Factory() { return new Live(i0.ɵɵinject(i1.DOCUMENT), i0.ɵɵinject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\nLive.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: undefined, decorators: [{ type: Inject, args: [ARIA_LIVE_DELAY,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Live, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ARIA_LIVE_DELAY]\n }] }]; }, null); })();\n\n/**\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\n *\n * You can inject this service, typically in your root component, and customize the values of its properties in\n * order to provide default values for all the typeaheads used in the application.\n */\nclass NgbTypeaheadConfig {\n constructor() {\n this.editable = true;\n this.focusFirst = true;\n this.showHint = false;\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\n }\n}\nNgbTypeaheadConfig.ɵfac = function NgbTypeaheadConfig_Factory(t) { return new (t || NgbTypeaheadConfig)(); };\nNgbTypeaheadConfig.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nlet nextWindowId = 0;\n/**\n * A directive providing a simple way of creating powerful typeaheads from any text input.\n */\nclass NgbTypeahead {\n constructor(_elementRef, viewContainerRef, _renderer, injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\n this._elementRef = _elementRef;\n this._renderer = _renderer;\n this._live = _live;\n this._document = _document;\n this._ngZone = _ngZone;\n this._changeDetector = _changeDetector;\n this._subscription = null;\n this._closed$ = new Subject();\n this._inputValueBackup = null;\n this._windowRef = null;\n /**\n * The value for the `autocomplete` attribute for the `` element.\n *\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\n *\n * @since 2.1.0\n */\n this.autocomplete = 'off';\n /**\n * The preferred placement of the typeahead.\n *\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\n * `\"right-bottom\"`\n *\n * Accepts an array of strings or a string with space separated possible values.\n *\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\n *\n * Please see the [positioning overview](#/positioning) for more details.\n */\n this.placement = 'bottom-left';\n /**\n * An event emitted right before an item is selected from the result list.\n *\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\n */\n this.selectItem = new EventEmitter();\n this.activeDescendant = null;\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\n this._onTouched = () => { };\n this._onChange = (_) => { };\n this.container = config.container;\n this.editable = config.editable;\n this.focusFirst = config.focusFirst;\n this.showHint = config.showHint;\n this.placement = config.placement;\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\n .pipe(map($event => $event.target.value));\n this._resubscribeTypeahead = new BehaviorSubject(null);\n this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\n this._zoneSubscription = ngZone.onStable.subscribe(() => {\n if (this.isPopupOpen()) {\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body');\n }\n });\n }\n ngOnInit() { this._subscribeToUserInput(); }\n ngOnChanges({ ngbTypeahead }) {\n if (ngbTypeahead && !ngbTypeahead.firstChange) {\n this._unsubscribeFromUserInput();\n this._subscribeToUserInput();\n }\n }\n ngOnDestroy() {\n this._closePopup();\n this._unsubscribeFromUserInput();\n this._zoneSubscription.unsubscribe();\n }\n registerOnChange(fn) { this._onChange = fn; }\n registerOnTouched(fn) { this._onTouched = fn; }\n writeValue(value) {\n this._writeInputValue(this._formatItemForInput(value));\n if (this.showHint) {\n this._inputValueBackup = value;\n }\n }\n setDisabledState(isDisabled) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\n }\n /**\n * Dismisses typeahead popup window\n */\n dismissPopup() {\n if (this.isPopupOpen()) {\n this._resubscribeTypeahead.next(null);\n this._closePopup();\n if (this.showHint && this._inputValueBackup !== null) {\n this._writeInputValue(this._inputValueBackup);\n }\n this._changeDetector.markForCheck();\n }\n }\n /**\n * Returns true if the typeahead popup window is displayed\n */\n isPopupOpen() { return this._windowRef != null; }\n handleBlur() {\n this._resubscribeTypeahead.next(null);\n this._onTouched();\n }\n handleKeyDown(event) {\n if (!this.isPopupOpen()) {\n return;\n }\n // tslint:disable-next-line:deprecation\n switch (event.which) {\n case Key.ArrowDown:\n event.preventDefault();\n this._windowRef.instance.next();\n this._showHint();\n break;\n case Key.ArrowUp:\n event.preventDefault();\n this._windowRef.instance.prev();\n this._showHint();\n break;\n case Key.Enter:\n case Key.Tab:\n const result = this._windowRef.instance.getActive();\n if (isDefined(result)) {\n event.preventDefault();\n event.stopPropagation();\n this._selectResult(result);\n }\n this._closePopup();\n break;\n }\n }\n _openPopup() {\n if (!this.isPopupOpen()) {\n this._inputValueBackup = this._elementRef.nativeElement.value;\n const { windowRef } = this._popupService.open();\n this._windowRef = windowRef;\n this._windowRef.instance.id = this.popupId;\n this._windowRef.instance.selectEvent.subscribe((result) => this._selectResultClosePopup(result));\n this._windowRef.instance.activeChangeEvent.subscribe((activeId) => this.activeDescendant = activeId);\n this._windowRef.instance.popupClass = this.popupClass;\n if (this.container === 'body') {\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\n }\n this._changeDetector.markForCheck();\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\n }\n }\n _closePopup() {\n this._popupService.close().subscribe(() => {\n this._closed$.next();\n this._windowRef = null;\n this.activeDescendant = null;\n });\n }\n _selectResult(result) {\n let defaultPrevented = false;\n this.selectItem.emit({ item: result, preventDefault: () => { defaultPrevented = true; } });\n this._resubscribeTypeahead.next(null);\n if (!defaultPrevented) {\n this.writeValue(result);\n this._onChange(result);\n }\n }\n _selectResultClosePopup(result) {\n this._selectResult(result);\n this._closePopup();\n }\n _showHint() {\n var _a;\n if (this.showHint && ((_a = this._windowRef) === null || _a === void 0 ? void 0 : _a.instance.hasActive()) && this._inputValueBackup != null) {\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\n if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\n this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\n }\n else {\n this._writeInputValue(formattedVal);\n }\n }\n }\n _formatItemForInput(item) {\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\n }\n _writeInputValue(value) {\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\n }\n _subscribeToUserInput() {\n const results$ = this._valueChanges.pipe(tap(value => {\n this._inputValueBackup = this.showHint ? value : null;\n this._onChange(this.editable ? value : undefined);\n }), this.ngbTypeahead ? this.ngbTypeahead : () => of([]));\n this._subscription = this._resubscribeTypeahead.pipe(switchMap(() => results$)).subscribe(results => {\n if (!results || results.length === 0) {\n this._closePopup();\n }\n else {\n this._openPopup();\n this._windowRef.instance.focusFirst = this.focusFirst;\n this._windowRef.instance.results = results;\n this._windowRef.instance.term = this._elementRef.nativeElement.value;\n if (this.resultFormatter) {\n this._windowRef.instance.formatter = this.resultFormatter;\n }\n if (this.resultTemplate) {\n this._windowRef.instance.resultTemplate = this.resultTemplate;\n }\n this._windowRef.instance.resetActive();\n // The observable stream we are subscribing to might have async steps\n // and if a component containing typeahead is using the OnPush strategy\n // the change detection turn wouldn't be invoked automatically.\n this._windowRef.changeDetectorRef.detectChanges();\n this._showHint();\n }\n // live announcer\n const count = results ? results.length : 0;\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\n });\n }\n _unsubscribeFromUserInput() {\n if (this._subscription) {\n this._subscription.unsubscribe();\n }\n this._subscription = null;\n }\n}\nNgbTypeahead.ɵfac = function NgbTypeahead_Factory(t) { return new (t || NgbTypeahead)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(NgbTypeaheadConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(Live), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTypeahead.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTypeahead, selectors: [[\"input\", \"ngbTypeahead\", \"\"]], hostAttrs: [\"autocapitalize\", \"off\", \"autocorrect\", \"off\", \"role\", \"combobox\", \"aria-multiline\", \"false\"], hostVars: 7, hostBindings: function NgbTypeahead_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbTypeahead_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbTypeahead_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"autocomplete\", ctx.autocomplete);\n ɵngcc0.ɵɵattribute(\"aria-autocomplete\", ctx.showHint ? \"both\" : \"list\")(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-owns\", ctx.isPopupOpen() ? ctx.popupId : null)(\"aria-expanded\", ctx.isPopupOpen());\n ɵngcc0.ɵɵclassProp(\"open\", ctx.isPopupOpen());\n } }, inputs: { autocomplete: \"autocomplete\", placement: \"placement\", container: \"container\", editable: \"editable\", focusFirst: \"focusFirst\", showHint: \"showHint\", inputFormatter: \"inputFormatter\", ngbTypeahead: \"ngbTypeahead\", resultFormatter: \"resultFormatter\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectItem: \"selectItem\" }, exportAs: [\"ngbTypeahead\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature] });\nNgbTypeahead.ctorParameters = () => [\n { type: ElementRef },\n { type: ViewContainerRef },\n { type: Renderer2 },\n { type: Injector },\n { type: ComponentFactoryResolver },\n { type: NgbTypeaheadConfig },\n { type: NgZone },\n { type: Live },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\n { type: NgZone },\n { type: ChangeDetectorRef },\n { type: ApplicationRef }\n];\nNgbTypeahead.propDecorators = {\n autocomplete: [{ type: Input }],\n container: [{ type: Input }],\n editable: [{ type: Input }],\n focusFirst: [{ type: Input }],\n inputFormatter: [{ type: Input }],\n ngbTypeahead: [{ type: Input }],\n resultFormatter: [{ type: Input }],\n resultTemplate: [{ type: Input }],\n showHint: [{ type: Input }],\n placement: [{ type: Input }],\n popupClass: [{ type: Input }],\n selectItem: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeahead, [{\n type: Directive,\n args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: NgbTypeaheadConfig }, { type: ɵngcc0.NgZone }, { type: Live }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { autocomplete: [{\n type: Input\n }], placement: [{\n type: Input\n }], selectItem: [{\n type: Output\n }], container: [{\n type: Input\n }], editable: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], showHint: [{\n type: Input\n }], inputFormatter: [{\n type: Input\n }], ngbTypeahead: [{\n type: Input\n }], resultFormatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }] }); })();\n\nclass NgbTypeaheadModule {\n}\nNgbTypeaheadModule.ɵfac = function NgbTypeaheadModule_Factory(t) { return new (t || NgbTypeaheadModule)(); };\nNgbTypeaheadModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTypeaheadModule });\nNgbTypeaheadModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n entryComponents: [NgbTypeaheadWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTypeaheadModule, { declarations: function () { return [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTypeahead, NgbHighlight]; } }); })();\n\nconst NGB_MODULES = [\n NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\n NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule\n];\nclass NgbModule {\n}\nNgbModule.ɵfac = function NgbModule_Factory(t) { return new (t || NgbModule)(); };\nNgbModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModule });\nNgbModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModule, [{\n type: NgModule,\n args: [{ imports: NGB_MODULES, exports: NGB_MODULES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModule, { imports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule], exports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbButtonLabel, NgbButtonsModule, NgbCalendar, NgbCalendarBuddhist, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCheckBox, NgbCollapse, NgbCollapseConfig, NgbCollapseModule, NgbConfig, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nDefault, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavPane, NgbNavbar, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPages, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRadio, NgbRadioGroup, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, NGB_CAROUSEL_DIRECTIVES as ɵa, NGB_DATEPICKER_CALENDAR_FACTORY as ɵb, ContentRef as ɵba, NgbDatepickerDayView as ɵc, NgbDatepickerNavigation as ɵd, NgbDatepickerNavigationSelect as ɵe, NGB_DATEPICKER_18N_FACTORY as ɵf, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵg, NgbDateStructAdapter as ɵh, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵi, NgbDateISOParserFormatter as ɵj, NgbPopoverWindow as ɵk, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵl, NgbTimeStructAdapter as ɵm, NGB_TIMEPICKER_I18N_FACTORY as ɵn, NgbTimepickerI18nDefault as ɵo, NgbTooltipWindow as ɵp, NgbTypeaheadWindow as ɵq, NgbDatepickerService as ɵr, NgbModalBackdrop as ɵs, NgbModalWindow as ɵt, NgbModalStack as ɵu, ScrollBar as ɵv, ARIA_LIVE_DELAY as ɵw, ARIA_LIVE_DELAY_FACTORY as ɵx, Live as ɵy, NgbCalendarHijri as ɵz };\n\n","import { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function endWith(...array) {\n return (source) => concat(source, of(...array));\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = {\n \"version\": \"0.24.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nimport copy from 'fast-copy';\n\nvar UNRESOLVED_LINK = {}; // unique object to avoid polyfill bloat using Symbol()\n\n/**\n * isLink Function\n * Checks if the object has sys.type \"Link\"\n * @param object\n */\nvar isLink = function isLink(object) {\n return object && object.sys && object.sys.type === 'Link';\n};\n\n/**\n * Creates a string key for lookup in entityMap\n *\n * @param {*} sys\n * @param {String} sys.type\n * @param {String} sys.id\n * @return {String}\n */\nvar makeLookupKey = function makeLookupKey(sys) {\n return sys.type + '!' + sys.id;\n};\n\n/**\n * getLink Function\n *\n * @param response\n * @param link\n * @return {undefined}\n */\nvar getLink = function getLink(entityMap, link) {\n var _link$sys = link.sys,\n type = _link$sys.linkType,\n id = _link$sys.id;\n\n var lookupKey = makeLookupKey({ type: type, id: id });\n\n return entityMap.get(lookupKey) || UNRESOLVED_LINK;\n};\n\n/**\n * cleanUpLinks Function\n * - Removes unresolvable links from Arrays and Objects\n *\n * @param {Object[]|Object} input\n */\nvar cleanUpLinks = function cleanUpLinks(input) {\n if (Array.isArray(input)) {\n return input.filter(function (val) {\n return val !== UNRESOLVED_LINK;\n });\n }\n for (var key in input) {\n if (input[key] === UNRESOLVED_LINK) {\n delete input[key];\n }\n }\n return input;\n};\n\n/**\n * walkMutate Function\n * @param input\n * @param predicate\n * @param mutator\n * @return {*}\n */\nvar walkMutate = function walkMutate(input, predicate, mutator, removeUnresolved) {\n if (predicate(input)) {\n return mutator(input);\n }\n\n if (input && (typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object') {\n for (var key in input) {\n if (input.hasOwnProperty(key)) {\n input[key] = walkMutate(input[key], predicate, mutator, removeUnresolved);\n }\n }\n if (removeUnresolved) {\n input = cleanUpLinks(input);\n }\n }\n return input;\n};\n\nvar normalizeLink = function normalizeLink(entityMap, link, removeUnresolved) {\n var resolvedLink = getLink(entityMap, link);\n if (resolvedLink === UNRESOLVED_LINK) {\n return removeUnresolved ? resolvedLink : link;\n }\n return resolvedLink;\n};\n\nvar makeEntryObject = function makeEntryObject(item, itemEntryPoints) {\n if (!Array.isArray(itemEntryPoints)) {\n return item;\n }\n\n var entryPoints = Object.keys(item).filter(function (ownKey) {\n return itemEntryPoints.indexOf(ownKey) !== -1;\n });\n\n return entryPoints.reduce(function (entryObj, entryPoint) {\n entryObj[entryPoint] = item[entryPoint];\n return entryObj;\n }, {});\n};\n\n/**\n * resolveResponse Function\n * Resolves contentful response to normalized form.\n * @param {Object} response Contentful response\n * @param {Object} options\n * @param {Boolean} options.removeUnresolved - Remove unresolved links default:false\n * @param {Array} options.itemEntryPoints - Resolve links only in those item properties\n * @return {Object}\n */\nvar resolveResponse = function resolveResponse(response, options) {\n options = options || {};\n if (!response.items) {\n return [];\n }\n var responseClone = copy(response);\n var allIncludes = Object.keys(responseClone.includes || {}).reduce(function (all, type) {\n return [].concat(_toConsumableArray(all), _toConsumableArray(response.includes[type]));\n }, []);\n\n var allEntries = [].concat(_toConsumableArray(responseClone.items), _toConsumableArray(allIncludes));\n\n var entityMap = new Map(allEntries.map(function (entity) {\n return [makeLookupKey(entity.sys), entity];\n }));\n\n allEntries.forEach(function (item) {\n var entryObject = makeEntryObject(item, options.itemEntryPoints);\n\n Object.assign(item, walkMutate(entryObject, isLink, function (link) {\n return normalizeLink(entityMap, link, options.removeUnresolved);\n }, options.removeUnresolved));\n });\n\n return responseClone.items;\n};\n\nexport default resolveResponse;","import copy from 'fast-copy';\nimport qs from 'qs';\nimport isString from 'lodash.isstring';\nimport pThrottle from 'p-throttle';\nimport os from 'os';\nimport isPlainObject from 'lodash.isplainobject';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (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\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, undefined, groups);\n };\n\n var _super = RegExp.prototype;\n\n var _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n _groups.set(_this, groups || _groups.get(re));\n\n return _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n _inherits(BabelRegExp, RegExp);\n\n BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n\n BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (typeof substitution === \"string\") {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n } else if (typeof substitution === \"function\") {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n\n if (typeof args[args.length - 1] !== \"object\") {\n args = [].slice.call(args);\n args.push(buildGroups(args, _this));\n }\n\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n\n return _wrapRegExp.apply(this, arguments);\n}\n\nfunction _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\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _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}\n\nfunction _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++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction isNode() {\n /**\n * Polyfills of 'process' might set process.browser === true\n *\n * See:\n * https://github.com/webpack/node-libs-browser/blob/master/mock/process.js#L8\n * https://github.com/defunctzombie/node-process/blob/master/browser.js#L156\n **/\n return typeof process !== 'undefined' && !process.browser;\n}\nfunction isReactNative() {\n return typeof window !== 'undefined' && 'navigator' in window && 'product' in window.navigator && window.navigator.product === 'ReactNative';\n}\nfunction getNodeVersion() {\n return process.versions && process.versions.node ? \"v\".concat(process.versions.node) : process.version;\n}\nfunction getWindow() {\n return window;\n}\nfunction noop() {\n return undefined;\n}\n\nvar PERCENTAGE_REGEX = /*#__PURE__*/_wrapRegExp(/([0-9]+)(%)/, {\n value: 1\n});\n\nfunction calculateLimit(type) {\n var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 7;\n var limit = max;\n\n if (PERCENTAGE_REGEX.test(type)) {\n var _type$match;\n\n var groups = (_type$match = type.match(PERCENTAGE_REGEX)) === null || _type$match === void 0 ? void 0 : _type$match.groups;\n\n if (groups && groups.value) {\n var percentage = parseInt(groups.value) / 100;\n limit = Math.round(max * percentage);\n }\n }\n\n return Math.min(30, Math.max(1, limit));\n}\n\nfunction createThrottle(limit, logger) {\n logger('info', \"Throttle request to \".concat(limit, \"/s\"));\n return pThrottle({\n limit: limit,\n interval: 1000,\n strict: false\n });\n}\n\nvar rateLimitThrottle = (function (axiosInstance) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'auto';\n var _axiosInstance$defaul = axiosInstance.defaults.logHandler,\n logHandler = _axiosInstance$defaul === void 0 ? noop : _axiosInstance$defaul;\n var limit = isString(type) ? calculateLimit(type) : calculateLimit('auto', type);\n var throttle = createThrottle(limit, logHandler);\n var isCalculated = false;\n var requestInterceptorId = axiosInstance.interceptors.request.use(function (config) {\n return throttle(function () {\n return config;\n })();\n }, function (error) {\n return Promise.reject(error);\n });\n var responseInterceptorId = axiosInstance.interceptors.response.use(function (response) {\n if (!isCalculated && isString(type) && (type === 'auto' || PERCENTAGE_REGEX.test(type)) && response.headers && response.headers['x-contentful-ratelimit-second-limit']) {\n var rawLimit = parseInt(response.headers['x-contentful-ratelimit-second-limit']);\n var nextLimit = calculateLimit(type, rawLimit);\n\n if (nextLimit !== limit) {\n if (requestInterceptorId) {\n axiosInstance.interceptors.request.eject(requestInterceptorId);\n }\n\n limit = nextLimit;\n throttle = createThrottle(nextLimit, logHandler);\n requestInterceptorId = axiosInstance.interceptors.request.use(function (config) {\n return throttle(function () {\n return config;\n })();\n }, function (error) {\n return Promise.reject(error);\n });\n }\n\n isCalculated = true;\n }\n\n return response;\n }, function (error) {\n return Promise.reject(error);\n });\n return function () {\n axiosInstance.interceptors.request.eject(requestInterceptorId);\n axiosInstance.interceptors.response.eject(responseInterceptorId);\n };\n});\n\nvar attempts = {};\nvar networkErrorAttempts = 0;\n\nvar delay = function delay(ms) {\n return new Promise(function (resolve) {\n setTimeout(resolve, ms);\n });\n};\n\nfunction rateLimit(instance) {\n var maxRetry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n var _instance$defaults = instance.defaults,\n _instance$defaults$re = _instance$defaults.responseLogger,\n responseLogger = _instance$defaults$re === void 0 ? noop : _instance$defaults$re,\n _instance$defaults$re2 = _instance$defaults.requestLogger,\n requestLogger = _instance$defaults$re2 === void 0 ? noop : _instance$defaults$re2;\n instance.interceptors.request.use(function (config) {\n requestLogger(config);\n return config;\n }, function (error) {\n requestLogger(error);\n return Promise.reject(error);\n });\n instance.interceptors.response.use(function (response) {\n // we don't need to do anything here\n responseLogger(response);\n return response;\n }, function (error) {\n var response = error.response;\n var config = error.config;\n responseLogger(error); // Do not retry if it is disabled or no request config exists (not an axios error)\n\n if (!config || !instance.defaults.retryOnError) {\n return Promise.reject(error);\n }\n\n var retryErrorType = null;\n var wait = 0; // Errors without response did not receive anything from the server\n\n if (!response) {\n retryErrorType = 'Connection';\n networkErrorAttempts++;\n\n if (networkErrorAttempts > maxRetry) {\n error.attempts = networkErrorAttempts;\n return Promise.reject(error);\n }\n\n wait = Math.pow(Math.SQRT2, networkErrorAttempts);\n response = {};\n } else {\n networkErrorAttempts = 0;\n }\n\n if (response.status >= 500 && response.status < 600) {\n // 5** errors are server related\n retryErrorType = \"Server \".concat(response.status);\n var headers = response.headers || {};\n var requestId = headers['x-contentful-request-id'] || null;\n attempts[requestId] = attempts[requestId] || 0;\n attempts[requestId]++; // we reject if there are too many errors with the same request id or request id is not defined\n\n if (attempts[requestId] > maxRetry || !requestId) {\n error.attempts = attempts[requestId];\n return Promise.reject(error);\n }\n\n wait = Math.pow(Math.SQRT2, attempts[requestId]);\n } else if (response.status === 429) {\n // 429 errors are exceeded rate limit exceptions\n retryErrorType = 'Rate limit'; // all headers are lowercased by axios https://github.com/mzabriskie/axios/issues/413\n\n if (response.headers && error.response.headers['x-contentful-ratelimit-reset']) {\n wait = response.headers['x-contentful-ratelimit-reset'];\n }\n }\n\n if (retryErrorType) {\n // convert to ms and add jitter\n wait = Math.floor(wait * 1000 + Math.random() * 200 + 500);\n instance.defaults.logHandler('warning', \"\".concat(retryErrorType, \" error occurred. Waiting for \").concat(wait, \" ms before retrying...\"));\n /* Somehow between the interceptor and retrying the request the httpAgent/httpsAgent gets transformed from an Agent-like object\n to a regular object, causing failures on retries after rate limits. Removing these properties here fixes the error, but retry\n requests still use the original http/httpsAgent property */\n\n delete config.httpAgent;\n delete config.httpsAgent;\n return delay(wait).then(function () {\n return instance(config);\n });\n }\n\n return Promise.reject(error);\n });\n}\n\nfunction asyncToken(instance, getToken) {\n instance.interceptors.request.use(function (config) {\n return getToken().then(function (accessToken) {\n config.headers = _objectSpread2(_objectSpread2({}, config.headers), {}, {\n Authorization: \"Bearer \".concat(accessToken)\n });\n return config;\n });\n });\n}\n\n// Also enforces toplevel domain specified, no spaces and no protocol\n\nvar HOST_REGEX = /^(?!\\w+:\\/\\/)([^\\s:]+\\.?[^\\s:]+)(?::(\\d+))?(?!:)$/;\n/**\n * Create pre configured axios instance\n * @private\n * @param {AxiosStatic} axios - Axios library\n * @param {CreateHttpClientParams} options - Initialization parameters for the HTTP client\n * @return {ContentfulAxiosInstance} Initialized axios instance\n */\n\nfunction createHttpClient(axios, options) {\n var defaultConfig = {\n insecure: false,\n retryOnError: true,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logHandler: function logHandler(level, data) {\n if (level === 'error' && data) {\n var title = [data.name, data.message].filter(function (a) {\n return a;\n }).join(' - ');\n console.error(\"[error] \".concat(title));\n console.error(data);\n return;\n }\n\n console.log(\"[\".concat(level, \"] \").concat(data));\n },\n // Passed to axios\n headers: {},\n httpAgent: false,\n httpsAgent: false,\n timeout: 30000,\n throttle: 0,\n proxy: false,\n basePath: '',\n adapter: undefined,\n maxContentLength: 1073741824,\n // 1GB\n maxBodyLength: 1073741824 // 1GB\n\n };\n\n var config = _objectSpread2(_objectSpread2({}, defaultConfig), options);\n\n if (!config.accessToken) {\n var missingAccessTokenError = new TypeError('Expected parameter accessToken');\n config.logHandler('error', missingAccessTokenError);\n throw missingAccessTokenError;\n } // Construct axios baseURL option\n\n\n var protocol = config.insecure ? 'http' : 'https';\n var space = config.space ? \"\".concat(config.space, \"/\") : '';\n var hostname = config.defaultHostname;\n var port = config.insecure ? 80 : 443;\n\n if (config.host && HOST_REGEX.test(config.host)) {\n var parsed = config.host.split(':');\n\n if (parsed.length === 2) {\n\n var _parsed = _slicedToArray(parsed, 2);\n\n hostname = _parsed[0];\n port = _parsed[1];\n } else {\n hostname = parsed[0];\n }\n } // Ensure that basePath does start but not end with a slash\n\n\n if (config.basePath) {\n config.basePath = \"/\".concat(config.basePath.split('/').filter(Boolean).join('/'));\n }\n\n var baseURL = options.baseURL || \"\".concat(protocol, \"://\").concat(hostname, \":\").concat(port).concat(config.basePath, \"/spaces/\").concat(space);\n\n if (!config.headers.Authorization && typeof config.accessToken !== 'function') {\n config.headers.Authorization = 'Bearer ' + config.accessToken;\n } // Set these headers only for node because browsers don't like it when you\n // override user-agent or accept-encoding.\n // The SDKs should set their own X-Contentful-User-Agent.\n\n\n if (isNode()) {\n config.headers['user-agent'] = 'node.js/' + getNodeVersion();\n config.headers['Accept-Encoding'] = 'gzip';\n }\n\n var axiosOptions = {\n // Axios\n baseURL: baseURL,\n headers: config.headers,\n httpAgent: config.httpAgent,\n httpsAgent: config.httpsAgent,\n paramsSerializer: qs.stringify,\n proxy: config.proxy,\n timeout: config.timeout,\n adapter: config.adapter,\n maxContentLength: config.maxContentLength,\n maxBodyLength: config.maxBodyLength,\n // Contentful\n logHandler: config.logHandler,\n responseLogger: config.responseLogger,\n requestLogger: config.requestLogger,\n retryOnError: config.retryOnError\n };\n var instance = axios.create(axiosOptions);\n instance.httpClientParams = options;\n /**\n * Creates a new axios instance with the same default base parameters as the\n * current one, and with any overrides passed to the newParams object\n * This is useful as the SDKs use dependency injection to get the axios library\n * and the version of the library comes from different places depending\n * on whether it's a browser build or a node.js build.\n * @private\n * @param {CreateHttpClientParams} httpClientParams - Initialization parameters for the HTTP client\n * @return {ContentfulAxiosInstance} Initialized axios instance\n */\n\n instance.cloneWithNewParams = function (newParams) {\n return createHttpClient(axios, _objectSpread2(_objectSpread2({}, copy(options)), newParams));\n };\n /**\n * Apply interceptors.\n * Please note that the order of interceptors is important\n */\n\n\n if (config.onBeforeRequest) {\n instance.interceptors.request.use(config.onBeforeRequest);\n }\n\n if (typeof config.accessToken === 'function') {\n asyncToken(instance, config.accessToken);\n }\n\n if (config.throttle) {\n rateLimitThrottle(instance, config.throttle);\n }\n\n rateLimit(instance, config.retryLimit);\n\n if (config.onError) {\n instance.interceptors.response.use(function (response) {\n return response;\n }, config.onError);\n }\n\n return instance;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Creates request parameters configuration by parsing an existing query object\n * @private\n * @param {Object} query\n * @return {Object} Config object with `params` property, ready to be used in axios\n */\nfunction createRequestConfig(_ref) {\n var query = _ref.query;\n var config = {};\n delete query.resolveLinks;\n config.params = copy(query);\n return config;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction enforceObjPath(obj, path) {\n if (!(path in obj)) {\n var err = new Error();\n err.name = 'PropertyMissing';\n err.message = \"Required property \".concat(path, \" missing from:\\n\\n\").concat(JSON.stringify(obj), \"\\n\\n\");\n throw err;\n }\n\n return true;\n}\n\n// copied from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\nfunction deepFreeze(object) {\n var propNames = Object.getOwnPropertyNames(object);\n\n var _iterator = _createForOfIteratorHelper(propNames),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var name = _step.value;\n var value = object[name];\n\n if (value && _typeof(value) === 'object') {\n deepFreeze(value);\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n\n return Object.freeze(object);\n}\n\nfunction freezeSys(obj) {\n deepFreeze(obj.sys || {});\n return obj;\n}\n\nfunction getBrowserOS() {\n var win = getWindow();\n\n if (!win) {\n return null;\n }\n\n var userAgent = win.navigator.userAgent; // TODO: platform is deprecated.\n\n var platform = win.navigator.platform;\n var macosPlatforms = ['Macintosh', 'MacIntel', 'MacPPC', 'Mac68K'];\n var windowsPlatforms = ['Win32', 'Win64', 'Windows', 'WinCE'];\n var iosPlatforms = ['iPhone', 'iPad', 'iPod'];\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n return 'macOS';\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n return 'iOS';\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n return 'Windows';\n } else if (/Android/.test(userAgent)) {\n return 'Android';\n } else if (/Linux/.test(platform)) {\n return 'Linux';\n }\n\n return null;\n}\n\nfunction getNodeOS() {\n var platform = os.platform() || 'linux';\n var version = os.release() || '0.0.0';\n var platformMap = {\n android: 'Android',\n aix: 'Linux',\n darwin: 'macOS',\n freebsd: 'Linux',\n linux: 'Linux',\n openbsd: 'Linux',\n sunos: 'Linux',\n win32: 'Windows'\n };\n\n if (platform in platformMap) {\n return \"\".concat(platformMap[platform] || 'Linux', \"/\").concat(version);\n }\n\n return null;\n}\n\nfunction getUserAgentHeader(sdk, application, integration, feature) {\n var headerParts = [];\n\n if (application) {\n headerParts.push(\"app \".concat(application));\n }\n\n if (integration) {\n headerParts.push(\"integration \".concat(integration));\n }\n\n if (feature) {\n headerParts.push('feature ' + feature);\n }\n\n headerParts.push(\"sdk \".concat(sdk));\n var platform = null;\n\n try {\n if (isReactNative()) {\n platform = getBrowserOS();\n headerParts.push('platform ReactNative');\n } else if (isNode()) {\n platform = getNodeOS();\n headerParts.push(\"platform node.js/\".concat(getNodeVersion()));\n } else {\n platform = getBrowserOS();\n headerParts.push('platform browser');\n }\n } catch (e) {\n platform = null;\n }\n\n if (platform) {\n headerParts.push(\"os \".concat(platform));\n }\n\n return \"\".concat(headerParts.filter(function (item) {\n return item !== '';\n }).join('; '), \";\");\n}\n\n/**\n * Mixes in a method to return just a plain object with no additional methods\n * @private\n * @param data - Any plain JSON response returned from the API\n * @return Enhanced object with toPlainObject method\n */\n\nfunction toPlainObject(data) {\n return Object.defineProperty(data, 'toPlainObject', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: function value() {\n return copy(this);\n }\n });\n}\n\n/**\n * Handles errors received from the server. Parses the error into a more useful\n * format, places it in an exception and throws it.\n * See https://www.contentful.com/developers/docs/references/errors/\n * for more details on the data received on the errorResponse.data property\n * and the expected error codes.\n * @private\n */\nfunction errorHandler(errorResponse) {\n var config = errorResponse.config,\n response = errorResponse.response;\n var errorName; // Obscure the Management token\n\n if (config && config.headers && config.headers['Authorization']) {\n var token = \"...\".concat(config.headers['Authorization'].substr(-5));\n config.headers['Authorization'] = \"Bearer \".concat(token);\n }\n\n if (!isPlainObject(response) || !isPlainObject(config)) {\n throw errorResponse;\n }\n\n var data = response === null || response === void 0 ? void 0 : response.data;\n var errorData = {\n status: response === null || response === void 0 ? void 0 : response.status,\n statusText: response === null || response === void 0 ? void 0 : response.statusText,\n message: '',\n details: {}\n };\n\n if (isPlainObject(config)) {\n errorData.request = {\n url: config.url,\n headers: config.headers,\n method: config.method,\n payloadData: config.data\n };\n }\n\n if (data && isPlainObject(data)) {\n if ('requestId' in data) {\n errorData.requestId = data.requestId || 'UNKNOWN';\n }\n\n if ('message' in data) {\n errorData.message = data.message || '';\n }\n\n if ('details' in data) {\n errorData.details = data.details || {};\n }\n\n if ('sys' in data) {\n if ('id' in data.sys) {\n errorName = data.sys.id;\n }\n }\n }\n\n var error = new Error();\n error.name = errorName && errorName !== 'Unknown' ? errorName : \"\".concat(response === null || response === void 0 ? void 0 : response.status, \" \").concat(response === null || response === void 0 ? void 0 : response.statusText);\n\n try {\n error.message = JSON.stringify(errorData, null, ' ');\n } catch (_unused) {\n var _errorData$message;\n\n error.message = (_errorData$message = errorData === null || errorData === void 0 ? void 0 : errorData.message) !== null && _errorData$message !== void 0 ? _errorData$message : '';\n }\n\n throw error;\n}\n\nexport { createHttpClient, createRequestConfig, enforceObjPath, errorHandler, freezeSys, getUserAgentHeader, toPlainObject };\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n if (sideChannel.has(object)) {\n throw new RangeError('Cyclic object value');\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n var value = typeof key === 'object' && key.value !== undefined ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, true);\n var valueSideChannel = getSideChannel();\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && opts.encoder !== undefined && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createClient = createClient;\n\nvar _axios = _interopRequireDefault(require(\"axios\"));\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nvar _createContentfulApi = _interopRequireDefault(require(\"./create-contentful-api\"));\n\nvar _createGlobalOptions = _interopRequireDefault(require(\"./create-global-options\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * Create a client instance\n * @func\n * @name createClient\n * @memberof contentful\n * @param {Object} params - Client initialization parameters\n * @prop {string} params.space - Space ID\n * @prop {string} params.accessToken - Contentful CDA Access Token\n * @prop {string} [params.environment=\"master\"] - Contentful Environment ID\n * @prop {boolean=} params.insecure - Requests will be made over http instead of the default https (default: true)\n * @prop {string=} params.host - API host (default: cdn.contentful.com). Also usable with preview.contentful.com.\n * @prop {string=} params.basePath - Path appended to the host to support gateways/proxies with custom urls.\n * @prop {Object=} params.httpAgent - Optional Node.js HTTP agent for proxying (see Node.js docs and https-proxy-agent)\n * @prop {Object=} params.httpsAgent - Optional Node.js HTTP agent for proxying (see Node.js docs and https-proxy-agent)\n * @prop {Object=} params.proxy - Optional Axios proxy (see axios docs )\n * @prop {Object=} params.headers - Optional additional headers\n * @prop {function=} params.adapter - Optional axios request adapter (see axios docs )\n * @prop {boolean=?} params.resolveLinks - If we should resolve links between entries (default: true)\n * @prop {boolean=?} params.removeUnresolved - If we should remove links to entries which could not be resolved (default: false)\n * @prop {boolean=?} params.retryOnError - If we should retry on errors and 429 rate limit exceptions (default: true)\n * @prop {function=} params.logHandler - A log handler function to process given log messages & errors. Receives the log level (error, warning & info) and the actual log data (Error object or string). (The default can be found at: https://github.com/contentful/contentful-sdk-core/blob/master/src/create-http-client.ts)\n * @prop {string=?} params.application - Application name and version e.g myApp/version\n * @prop {string=?} params.integration - Integration name and version e.g react/version\n * @prop {number=} params.timeout in milliseconds - connection timeout (default:30000)\n * @prop {number=} params.retryLimit - Optional number of retries before failure. Default is 5\n * @returns {ContentfulClientAPI.ClientAPI}\n * @example\n * const contentful = require('contentful')\n * const client = contentful.createClient({\n * accessToken: 'myAccessToken',\n * space: 'mySpaceId'\n * })\n */\nfunction createClient(params) {\n if (!params.accessToken) {\n throw new TypeError('Expected parameter accessToken');\n }\n\n if (!params.space) {\n throw new TypeError('Expected parameter space');\n }\n\n const defaultConfig = {\n resolveLinks: true,\n removeUnresolved: false,\n defaultHostname: 'cdn.contentful.com',\n environment: 'master'\n };\n\n const config = _objectSpread(_objectSpread({}, defaultConfig), params);\n\n const userAgentHeader = (0, _contentfulSdkCore.getUserAgentHeader)(`contentful.js/${\"9.1.4\"}`, config.application, config.integration);\n config.headers = _objectSpread(_objectSpread({}, config.headers), {}, {\n 'Content-Type': 'application/vnd.contentful.delivery.v1+json',\n 'X-Contentful-User-Agent': userAgentHeader\n });\n const http = (0, _contentfulSdkCore.createHttpClient)(_axios.default, config);\n const getGlobalOptions = (0, _createGlobalOptions.default)({\n resolveLinks: config.resolveLinks,\n environment: config.environment,\n removeUnresolved: config.removeUnresolved,\n spaceBaseUrl: http.defaults.baseURL,\n environmentBaseUrl: `${http.defaults.baseURL}environments/${config.environment}`\n }); // Append environment to baseURL\n\n http.defaults.baseURL = getGlobalOptions().environmentBaseUrl;\n return (0, _createContentfulApi.default)({\n http,\n getGlobalOptions\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createContentfulApi;\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nvar _entities = _interopRequireDefault(require(\"./entities\"));\n\nvar _pagedSync = _interopRequireDefault(require(\"./paged-sync\"));\n\nvar _normalizeSelect = _interopRequireDefault(require(\"./utils/normalize-select\"));\n\nvar _validateTimestamp = _interopRequireDefault(require(\"./utils/validate-timestamp\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nconst ASSET_KEY_MAX_LIFETIME = 48 * 60 * 60;\n/**\n * Creates API object with methods to access functionality from Contentful's\n * Delivery API\n * @private\n * @param {Object} params - API initialization params\n * @prop {Object} http - HTTP client instance\n * @prop {Object} entities - Object with wrapper methods for each kind of entity\n * @prop {Function} getGlobalOptions - Link resolver preconfigured with global setting\n * @return {ClientAPI}\n */\n\nfunction createContentfulApi({\n http,\n getGlobalOptions\n}) {\n const {\n wrapSpace\n } = _entities.default.space;\n const {\n wrapContentType,\n wrapContentTypeCollection\n } = _entities.default.contentType;\n const {\n wrapEntry,\n wrapEntryCollection\n } = _entities.default.entry;\n const {\n wrapAsset,\n wrapAssetCollection\n } = _entities.default.asset;\n const {\n wrapTag,\n wrapTagCollection\n } = _entities.default.tag;\n const {\n wrapAssetKey\n } = _entities.default.assetKey;\n const {\n wrapLocaleCollection\n } = _entities.default.locale;\n\n const notFoundError = id => {\n const error = new Error('The resource could not be found.');\n error.sys = {\n type: 'Error',\n id: 'NotFound'\n };\n error.details = {\n type: 'Entry',\n id: id,\n environment: getGlobalOptions().environment,\n space: getGlobalOptions().space\n };\n return error;\n };\n /**\n * Gets the Space which the client is currently configured to use\n * @memberof ContentfulClientAPI\n * @return {Promise} Promise for a Space\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n * // returns the space object with the above \n * const space = await client.getSpace()\n * console.log(space)\n */\n\n\n async function getSpace() {\n switchToSpace(http);\n\n try {\n const response = await http.get('');\n return wrapSpace(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets a Content Type\n * @memberof ContentfulClientAPI\n * @param {string} id\n * @return {Promise} Promise for a Content Type\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const contentType = await client.getContentType('')\n * console.log(contentType)\n */\n\n\n async function getContentType(id) {\n switchToEnvironment(http);\n\n try {\n const response = await http.get(`content_types/${id}`);\n return wrapContentType(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets a collection of Content Types\n * @memberof ContentfulClientAPI\n * @param {Object=} query - Object with search parameters. Check the JS SDK tutorial and the REST API reference for more details.\n * @return {Promise} Promise for a collection of Content Types\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const response = await client.getContentTypes()\n * console.log(response.items)\n */\n\n\n async function getContentTypes(query = {}) {\n switchToEnvironment(http);\n\n try {\n const response = await http.get('content_types', (0, _contentfulSdkCore.createRequestConfig)({\n query: query\n }));\n return wrapContentTypeCollection(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets an Entry\n * @memberof ContentfulClientAPI\n * @param {string} id\n * @param {Object=} query - Object with search parameters. In this method it's only useful for `locale`.\n * @return {Promise} Promise for an Entry\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const entry = await client.getEntry('')\n * console.log(entry)\n */\n\n\n async function getEntry(id, query = {}) {\n if (!id) {\n throw notFoundError(id);\n }\n\n try {\n const response = await this.getEntries(_objectSpread({\n 'sys.id': id\n }, query));\n\n if (response.items.length > 0) {\n return wrapEntry(response.items[0]);\n } else {\n throw notFoundError(id);\n }\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets a collection of Entries\n * @memberof ContentfulClientAPI\n * @param {Object=} query - Object with search parameters. Check the JS SDK tutorial and the REST API reference for more details.\n * @return {Promise} Promise for a collection of Entries\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const response = await client.getEntries()\n * .console.log(response.items)\n */\n\n\n async function getEntries(query = {}) {\n switchToEnvironment(http);\n const {\n resolveLinks,\n removeUnresolved\n } = getGlobalOptions(query);\n query = (0, _normalizeSelect.default)(query);\n\n try {\n const response = await http.get('entries', (0, _contentfulSdkCore.createRequestConfig)({\n query: query\n }));\n return wrapEntryCollection(response.data, {\n resolveLinks,\n removeUnresolved\n });\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets an Asset\n * @memberof ContentfulClientAPI\n * @param {string} id\n * @param {Object=} query - Object with search parameters. In this method it's only useful for `locale`.\n * @return {Promise} Promise for an Asset\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const asset = await client.getAsset('')\n * console.log(asset)\n */\n\n\n async function getAsset(id, query = {}) {\n switchToEnvironment(http);\n query = (0, _normalizeSelect.default)(query);\n\n try {\n const response = await http.get(`assets/${id}`, (0, _contentfulSdkCore.createRequestConfig)({\n query: query\n }));\n return wrapAsset(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets a collection of Assets\n * @memberof ContentfulClientAPI\n * @param {Object=} query - Object with search parameters. Check the JS SDK tutorial and the REST API reference for more details.\n * @return {Promise} Promise for a collection of Assets\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const response = await client.getAssets()\n * console.log(response.items)\n */\n\n\n async function getAssets(query = {}) {\n switchToEnvironment(http);\n query = (0, _normalizeSelect.default)(query);\n\n try {\n const response = await http.get('assets', (0, _contentfulSdkCore.createRequestConfig)({\n query: query\n }));\n return wrapAssetCollection(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets a Tag\n * @memberof ContentfulClientAPI\n * @param {string} id\n * @return {Promise} Promise for a Tag\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const tag = await client.getTag('')\n * console.log(tag)\n */\n\n\n async function getTag(id) {\n switchToEnvironment(http);\n\n try {\n const response = await http.get(`tags/${id}`);\n return wrapTag(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets a collection of Tags\n * @memberof ContentfulClientAPI\n * @param {Object=} query - Object with search parameters.\n * @return {Promise} Promise for a collection of Tags\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const response = await client.getTags()\n * console.log(response.items)\n */\n\n\n async function getTags(query = {}) {\n switchToEnvironment(http);\n query = (0, _normalizeSelect.default)(query);\n\n try {\n const response = await http.get('tags', (0, _contentfulSdkCore.createRequestConfig)({\n query: query\n }));\n return wrapTagCollection(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Creates an asset key for signing asset URLs (Embargoed Assets)\n * @memberof ContentfulClientAPI\n * @param {number} expiresAt - UNIX timestamp in the future, maximum of 48h from now\n * @return {Promise} Promise for an AssetKey\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const assetKey = await client.getAssetKey()\n * console.log(assetKey)\n */\n\n\n async function createAssetKey(expiresAt) {\n switchToEnvironment(http);\n\n try {\n const now = Math.floor(Date.now() / 1000);\n const currentMaxLifetime = now + ASSET_KEY_MAX_LIFETIME;\n (0, _validateTimestamp.default)('expiresAt', expiresAt, {\n maximum: currentMaxLifetime,\n now\n });\n const params = {\n expiresAt\n };\n const response = await http.post('asset_keys', params);\n return wrapAssetKey(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Gets a collection of Locale\n * @memberof ContentfulClientAPI\n * @param {Object=} query - Object with search parameters. Check the JS SDK tutorial and the REST API reference for more details.\n * @return {Promise} Promise for a collection of Locale\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const response = await client.getLocales()\n * console.log(response.items)\n */\n\n\n async function getLocales(query = {}) {\n switchToEnvironment(http);\n\n try {\n const response = await http.get('locales', (0, _contentfulSdkCore.createRequestConfig)({\n query: query\n }));\n return wrapLocaleCollection(response.data);\n } catch (error) {\n (0, _contentfulSdkCore.errorHandler)(error);\n }\n }\n /**\n * Synchronizes either all the content or only new content since last sync\n * See Synchronization for more information.\n * Important note: The the sync api endpoint does not support include or link resolution.\n * However contentful.js is doing link resolution client side if you only make an initial sync.\n * For the delta sync (using nextSyncToken) it is not possible since the sdk wont have access to all the data to make such an operation.\n * @memberof ContentfulClientAPI\n * @param {Object} query - Query object for the sync call. One of initial or nextSyncToken always needs to be specified, but not both.\n * @param {boolean?} query.initial - Indicates if this is the first sync. Use it if you don't have a sync token.\n * @param {string?} query.nextSyncToken - The token you got the last time you used this method. Ensures you only get changed content.\n * @param {string=} query.type - Filter by this type (all (default), Entry, Asset, Deletion, DeletedAsset or DeletedEntry)\n * @param {string=} query.content_type - Filter by this content type id\n * @param {boolean=} query.resolveLinks - When true, links to other Entries or Assets are resolved. Default: true.\n * @param {Object} options\n * @param {boolean=} [options.paginate = true] - Set to false to disable pagination\n * @return {Promise} Promise for the collection resulting of a sync operation\n * @example\n * const contentful = require('contentful')\n *\n * const client = contentful.createClient({\n * space: '',\n * accessToken: ''\n * })\n *\n * const response = await client.sync({\n * initial: true\n * })\n * console.log({\n * entries: response.entries,\n * assets: response.assets,\n * nextSyncToken: response.nextSyncToken\n * })\n */\n\n\n async function sync(query = {}, options = {\n paginate: true\n }) {\n const {\n resolveLinks,\n removeUnresolved\n } = getGlobalOptions(query);\n switchToEnvironment(http);\n return (0, _pagedSync.default)(http, query, _objectSpread({\n resolveLinks,\n removeUnresolved\n }, options));\n }\n /**\n * Parse raw json data into collection of entry objects.Links will be resolved also\n * @memberof ContentfulClientAPI\n * @param {Object} raw json data\n * @example\n * let data = {items: [\n * {\n * sys: {type: 'Entry', locale: 'en-US'},\n * fields: {\n * animal: {sys: {type: 'Link', linkType: 'Animal', id: 'oink'}},\n * anotheranimal: {sys: {type: 'Link', linkType: 'Animal', id: 'middle-parrot'}}\n * }\n * }\n * ],\n * includes: {\n * Animal: [\n * {\n * sys: {type: 'Animal', id: 'oink', locale: 'en-US'},\n * fields: {\n * name: 'Pig',\n * friend: {sys: {type: 'Link', linkType: 'Animal', id: 'groundhog'}}\n * }\n * }\n * ]\n * }\n * }\n * console.log( data.items[0].fields.foo ); // undefined\n * let parsedData = client.parseEntries(data);\n * console.log( parsedData.items[0].fields.foo ); // foo\n */\n\n\n function parseEntries(data) {\n const {\n resolveLinks,\n removeUnresolved\n } = getGlobalOptions({});\n return wrapEntryCollection(data, {\n resolveLinks,\n removeUnresolved\n });\n }\n /*\n * Switches BaseURL to use /environments path\n * */\n\n\n function switchToEnvironment(http) {\n http.defaults.baseURL = getGlobalOptions().environmentBaseUrl;\n }\n /*\n * Switches BaseURL to use /spaces path\n * */\n\n\n function switchToSpace(http) {\n http.defaults.baseURL = getGlobalOptions().spaceBaseUrl;\n }\n\n return {\n getSpace,\n getContentType,\n getContentTypes,\n getEntry,\n getEntries,\n getAsset,\n getAssets,\n getTag,\n getTags,\n createAssetKey,\n getLocales,\n parseEntries,\n sync\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = createGlobalOptions;\n\n/**\n * Link resolution can be set globally, or it can be turned off for the methods\n * which make use of it. The local setting always overrides the global setting.\n * @private\n * @param {boolean} globalSetting - Global library setting for link resolution\n * @returns {function} Link resolver method preconfigured with global setting\n */\nfunction createGlobalOptions(globalSettings) {\n /**\n * Link resolver method\n * @param {Object} query - regular query object used for collection endpoints\n */\n return function getGlobalOptions(query) {\n return Object.assign({}, globalSettings, query);\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wrapAssetKey = wrapAssetKey;\n\nvar _fastCopy = _interopRequireDefault(require(\"fast-copy\"));\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @memberof Entities\n * @typedef AssetKey\n * @prop {string} policy - The asset key's policy\n * @prop {string} secret - The secret for creating a signing token\n * @prop {function(): Object} toPlainObject() - Returns this AssetKey as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw asset key data\n * @return {Asset} Wrapped asset key data\n */\nfunction wrapAssetKey(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wrapAsset = wrapAsset;\nexports.wrapAssetCollection = wrapAssetCollection;\n\nvar _fastCopy = _interopRequireDefault(require(\"fast-copy\"));\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @memberof Entities\n * @typedef Asset\n * @prop {Entities.Sys} sys - Standard system metadata with additional entry specific properties\n * @prop {string=} sys.locale - If present, indicates the locale which this asset uses\n * @prop {Object} fields - Object with content for each field\n * @prop {string} fields.title - Title for this asset\n * @prop {string} fields.description - Description for this asset\n * @prop {Object} fields.file - File object for this asset\n * @prop {string} fields.file.fileName - Name for the file\n * @prop {string} fields.file.contentType - Mime type for the file\n * @prop {string} fields.file.url - Url where the file is available at.\n * @prop {Object} fields.file.details - Details for the file, depending on file type (example: image size in bytes, etc)\n * @prop {function(): Object} toPlainObject() - Returns this Asset as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw asset data\n * @return {Asset} Wrapped asset data\n */\nfunction wrapAsset(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}\n/**\n * @memberof Entities\n * @typedef AssetCollection\n * @prop {number} total\n * @prop {number} skip\n * @prop {number} limit\n * @prop {Array} items\n * @prop {function(): Object} toPlainObject() - Returns this Asset collection as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw asset collection data\n * @return {AssetCollection} Wrapped asset collection data\n */\n\n\nfunction wrapAssetCollection(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wrapContentType = wrapContentType;\nexports.wrapContentTypeCollection = wrapContentTypeCollection;\n\nvar _fastCopy = _interopRequireDefault(require(\"fast-copy\"));\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @memberof Entities\n * @typedef ContentType\n * @prop {Entities.Sys} sys - System metadata\n * @prop {string} name\n * @prop {string} description\n * @prop {string} displayField - Field used as the main display field for Entries\n * @prop {string} Array - All the fields contained in this Content Type\n * @prop {function(): Object} toPlainObject() - Returns this Content Type as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw content type data\n * @return {ContentType} Wrapped content type data\n */\nfunction wrapContentType(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}\n/**\n * @memberof Entities\n * @typedef ContentTypeCollection\n * @prop {number} total\n * @prop {number} skip\n * @prop {number} limit\n * @prop {Array} items\n * @prop {function(): Object} toPlainObject() - Returns this Content Type collection as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw content type collection data\n * @return {ContentTypeCollection} Wrapped content type collection data\n */\n\n\nfunction wrapContentTypeCollection(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wrapEntry = wrapEntry;\nexports.wrapEntryCollection = wrapEntryCollection;\n\nvar _fastCopy = _interopRequireDefault(require(\"fast-copy\"));\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nvar _stringifySafe = _interopRequireDefault(require(\"../mixins/stringify-safe\"));\n\nvar _contentfulResolveResponse = _interopRequireDefault(require(\"contentful-resolve-response\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Types of fields found in an Entry\n * @namespace EntryFields\n */\n\n/**\n * @memberof EntryFields\n * @typedef Symbol\n * @type string\n */\n\n/**\n * @memberof EntryFields\n * @typedef Text\n * @type string\n */\n\n/**\n * @memberof EntryFields\n * @typedef Integer\n * @type number\n */\n\n/**\n * @memberof EntryFields\n * @typedef Number\n * @type number\n */\n\n/**\n * @memberof EntryFields\n * @typedef Date\n * @type string\n */\n\n/**\n * @memberof EntryFields\n * @typedef Boolean\n * @type boolean\n */\n\n/**\n * @memberof EntryFields\n * @typedef Location\n * @prop {string} lat - latitude\n * @prop {string} lon - longitude\n */\n\n/**\n * A Field in an Entry can have one of the following types that can be defined in Contentful. See Field Types for more details.\n * @memberof Entities\n * @typedef Field\n * @type EntryFields.Symbol | EntryFields.Text | EntryFields.Integer | EntryFields.Number | EntryFields.Date | EntryFields.Boolean | EntryFields.Location | Entities.Link | Array | Object\n */\n\n/**\n * @memberof Entities\n * @typedef Entry\n * @prop {Entities.Sys} sys - Standard system metadata with additional entry specific properties\n * @prop {Entities.Link} sys.contentType - Content Type used by this Entry\n * @prop {string=} sys.locale - If present, indicates the locale which this entry uses\n * @prop {Object} fields - Object with content for each field\n * @prop {function(): Object} toPlainObject() - Returns this Entry as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw entry data\n * @return {Entry} Wrapped entry data\n */\nfunction wrapEntry(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}\n/**\n * @memberof Entities\n * @typedef EntryCollection\n * @prop {number} total\n * @prop {number} skip\n * @prop {number} limit\n * @prop {Array} items\n * @prop {Array=} errors - Array of errors that might occur when retrieving entries.\n * @prop {Object=} includes - Object with arrays of includes for Entries and Assets. This will be present if resolveLinks is on, and any linked entries or assets exist. Those links will be resolved in the Entries present in the items array, but they are also present here in raw form.\n * @prop {function(): Object} toPlainObject() - Returns this Entry collection as a plain JS object\n * @prop {function(?function=, space=): Object} stringifySafe(replacer,space) - Stringifies the entry collection, accounting for circular references. Circular references will be replaced with just a Link object, with a circular property set to true. See MDN and json-stringify-safe for more details on the arguments this method can take.\n */\n\n/**\n * Data is also mixed in with link getters if links exist and includes were requested\n * @private\n * @param {Object} data - Raw entry collection data\n * @param {Object} options - wrapper options\n * @return {EntryCollection} Wrapped entry collection data\n */\n\n\nfunction wrapEntryCollection(data, {\n resolveLinks,\n removeUnresolved\n}) {\n const wrappedData = (0, _stringifySafe.default)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n\n if (resolveLinks) {\n wrappedData.items = (0, _contentfulResolveResponse.default)(wrappedData, {\n removeUnresolved,\n itemEntryPoints: ['fields']\n });\n }\n\n return (0, _contentfulSdkCore.freezeSys)(wrappedData);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar space = _interopRequireWildcard(require(\"./space\"));\n\nvar entry = _interopRequireWildcard(require(\"./entry\"));\n\nvar asset = _interopRequireWildcard(require(\"./asset\"));\n\nvar assetKey = _interopRequireWildcard(require(\"./asset-key\"));\n\nvar contentType = _interopRequireWildcard(require(\"./content-type\"));\n\nvar locale = _interopRequireWildcard(require(\"./locale\"));\n\nvar tag = _interopRequireWildcard(require(\"./tag\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar _default = {\n space,\n entry,\n asset,\n assetKey,\n contentType,\n locale,\n tag\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wrapLocale = wrapLocale;\nexports.wrapLocaleCollection = wrapLocaleCollection;\n\nvar _fastCopy = _interopRequireDefault(require(\"fast-copy\"));\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @memberof Entities\n * @typedef Locale\n * @prop {Entities.Sys} sys - Standard system metadata with additional entry specific properties\n * @prop {string} name - locale name (example: English)\n * @prop {string} code - locale code (example: en-US)\n * @prop {string} fallbackCode - the locale code to fallback to when there is not content for the current locale\n * @prop {boolean} default - If this is the default locale\n * @prop {boolean} optional - If the locale needs to be filled in on entries or not\n * @prop {function(): Object} toPlainObject() - Returns this Locale as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw locale data\n * @return {Locale} Wrapped locale data\n */\nfunction wrapLocale(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}\n/**\n * @memberof Entities\n * @typedef LocaleCollection\n * @prop {number} total\n * @prop {number} skip\n * @prop {number} limit\n * @prop {Array} items\n * @prop {function(): Object} toPlainObject() - Returns this Locale collection as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw locale collection data\n * @return {LocaleCollection} Wrapped locale collection data\n */\n\n\nfunction wrapLocaleCollection(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wrapSpace = wrapSpace;\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\n/**\n * @memberof Entities\n * @typedef Space\n * @prop {Object} sys - System metadata\n * @prop {string} sys.id - Space id\n * @prop {string} sys.type - Entity type\n * @prop {string} name - Space name\n * @prop {Array} locales - Array with locale codes\n * @prop {function(): Object} toPlainObject() - Returns this Space as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - API response for a Space\n * @return {Space}\n */\nfunction wrapSpace(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)(data));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.wrapTag = wrapTag;\nexports.wrapTagCollection = wrapTagCollection;\n\nvar _fastCopy = _interopRequireDefault(require(\"fast-copy\"));\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * @memberof Entities\n * @typedef Tag\n * @prop {Entities.Sys} sys - Standard system metadata with additional entry specific properties\n * @prop {string} name - Tag name\n * @prop {function(): Object} toPlainObject() - Returns this tag as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw tag data\n * @return {Tag} Wrapped tag data\n */\nfunction wrapTag(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}\n/**\n * @memberof Entities\n * @typedef TagCollection\n * @prop {number} total\n * @prop {number} skip\n * @prop {number} limit\n * @prop {Array} items\n * @prop {function(): Object} toPlainObject() - Returns this Tag collection as a plain JS object\n */\n\n/**\n * @private\n * @param {Object} data - Raw tag collection data\n * @return {TagCollection} Wrapped tag collection data\n */\n\n\nfunction wrapTagCollection(data) {\n return (0, _contentfulSdkCore.freezeSys)((0, _contentfulSdkCore.toPlainObject)((0, _fastCopy.default)(data)));\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = mixinStringifySafe;\n\nvar _jsonStringifySafe = _interopRequireDefault(require(\"json-stringify-safe\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction mixinStringifySafe(data) {\n return Object.defineProperty(data, 'stringifySafe', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: function (serializer = null, indent = '') {\n return (0, _jsonStringifySafe.default)(this, serializer, indent, (key, value) => {\n return {\n sys: {\n type: 'Link',\n linkType: 'Entry',\n id: value.sys.id,\n circular: true\n }\n };\n });\n }\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = pagedSync;\n\nvar _contentfulSdkCore = require(\"contentful-sdk-core\");\n\nvar _contentfulResolveResponse = _interopRequireDefault(require(\"contentful-resolve-response\"));\n\nvar _stringifySafe = _interopRequireDefault(require(\"./mixins/stringify-safe\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\n * @memberof Sync\n * @typedef SyncCollection\n * @prop {Array} entries - All existing entries on first sync. New and updated entries on subsequent syncs.\n * @prop {Array} assets - All existing assets on first sync. New and updated assets on subsequent syncs.\n * @prop {Array} deletedEntries - List of deleted Entries since last sync\n * @prop {Array} deletedAssets - List of deleted Assets since last sync\n * @prop {string} nextSyncToken - Token to be sent to the next sync call\n * @prop {function(): Object} toPlainObject() - Returns this Sync collection as a plain JS object\n * @prop {function(?function=, space=): Object} stringifySafe(replacer,space) - Stringifies the Sync collection, accounting for circular references. Circular references will be replaced with just a Link object, with a circular property set to true. See MDN and json-stringify-safe for more details on the arguments this method can take.\n */\n\n/**\n * Deleted Entries are the same as Entries, but only appear on the sync API.\n * @memberof Sync\n * @typedef DeletedEntry\n * @type Entities.Entry\n */\n\n/**\n * Deleted Assets are the same as Assets, but only appear on the sync API.\n * @memberof Sync\n * @typedef DeletedAsset\n * @type Entities.Asset\n */\n\n/**\n * This module retrieves all the available pages for a sync operation\n * @private\n * @param {Object} http - HTTP client\n * @param {Object} query - Query object\n * @param {Object} options - Sync options object\n * @param {boolean} [options.resolveLinks = true] - If links should be resolved\n * @param {boolean} [options.removeUnresolved = false] - If unresolvable links should get removed\n * @param {boolean} [options.paginate = true] - If further sync pages should automatically be crawled\n * @return {Promise}\n */\nasync function pagedSync(http, query, options = {}) {\n if (!query || !query.initial && !query.nextSyncToken && !query.nextPageToken) {\n throw new Error('Please provide one of `initial`, `nextSyncToken` or `nextPageToken` parameters for syncing');\n }\n\n if (query && query.content_type && !query.type) {\n query.type = 'Entry';\n } else if (query && query.content_type && query.type && query.type !== 'Entry') {\n throw new Error('When using the `content_type` filter your `type` parameter cannot be different from `Entry`.');\n }\n\n const defaultOptions = {\n resolveLinks: true,\n removeUnresolved: false,\n paginate: true\n };\n\n const {\n resolveLinks,\n removeUnresolved,\n paginate\n } = _objectSpread(_objectSpread({}, defaultOptions), options);\n\n const syncOptions = {\n paginate\n };\n const response = await getSyncPage(http, [], query, syncOptions); // clones response.items used in includes because we don't want these to be mutated\n\n if (resolveLinks) {\n response.items = (0, _contentfulResolveResponse.default)(response, {\n removeUnresolved,\n itemEntryPoints: ['fields']\n });\n } // maps response items again after getters are attached\n\n\n const mappedResponseItems = mapResponseItems(response.items);\n\n if (response.nextSyncToken) {\n mappedResponseItems.nextSyncToken = response.nextSyncToken;\n }\n\n if (response.nextPageToken) {\n mappedResponseItems.nextPageToken = response.nextPageToken;\n }\n\n return (0, _contentfulSdkCore.freezeSys)((0, _stringifySafe.default)((0, _contentfulSdkCore.toPlainObject)(mappedResponseItems)));\n}\n/**\n * @private\n * @param {Array} items\n * @return {Object} Entities mapped to an object for each entity type\n */\n\n\nfunction mapResponseItems(items) {\n const reducer = type => {\n return (accumulated, item) => {\n if (item.sys.type === type) {\n accumulated.push((0, _contentfulSdkCore.toPlainObject)(item));\n }\n\n return accumulated;\n };\n };\n\n return {\n entries: items.reduce(reducer('Entry'), []),\n assets: items.reduce(reducer('Asset'), []),\n deletedEntries: items.reduce(reducer('DeletedEntry'), []),\n deletedAssets: items.reduce(reducer('DeletedAsset'), [])\n };\n}\n/**\n * If the response contains a nextPageUrl, extracts the sync token to get the\n * next page and calls itself again with that token.\n * Otherwise, if the response contains a nextSyncUrl, extracts the sync token\n * and returns it.\n * On each call of this function, any retrieved items are collected in the\n * supplied items array, which gets returned in the end\n * @private\n * @param {Object} http\n * @param {Array} items\n * @param {Object} query\n * @param {Object} options - Sync page options object\n * @param {boolean} [options.paginate = true] - If further sync pages should automatically be crawled\n * @return {Promise<{items: Array, nextSyncToken: string}>}\n */\n\n\nasync function getSyncPage(http, items, query, {\n paginate\n}) {\n if (query.nextSyncToken) {\n query.sync_token = query.nextSyncToken;\n delete query.nextSyncToken;\n }\n\n if (query.nextPageToken) {\n query.sync_token = query.nextPageToken;\n delete query.nextPageToken;\n }\n\n if (query.sync_token) {\n delete query.initial;\n delete query.type;\n delete query.content_type;\n delete query.limit;\n }\n\n const response = await http.get('sync', (0, _contentfulSdkCore.createRequestConfig)({\n query: query\n }));\n const data = response.data || {};\n items = items.concat(data.items || []);\n\n if (data.nextPageUrl) {\n if (paginate) {\n delete query.initial;\n query.sync_token = getToken(data.nextPageUrl);\n return getSyncPage(http, items, query, {\n paginate\n });\n }\n\n return {\n items: items,\n nextPageToken: getToken(data.nextPageUrl)\n };\n } else if (data.nextSyncUrl) {\n return {\n items: items,\n nextSyncToken: getToken(data.nextSyncUrl)\n };\n } else {\n return {\n items: []\n };\n }\n}\n/**\n * Extracts token out of an url\n * @private\n */\n\n\nfunction getToken(url) {\n const urlParts = url.split('?');\n return urlParts.length > 0 ? urlParts[1].replace('sync_token=', '') : '';\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = normalizeSelect;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*\n* sdk relies heavily on sys metadata\n* so we cannot omit the sys property on sdk level entirely\n* and we have to ensure that at least `id` and `type` are present\n* */\nfunction normalizeSelect(query) {\n if (!query.select) {\n return query;\n } // The selection of fields for the query is limited\n // Get the different parts that are listed for selection\n\n\n const allSelects = Array.isArray(query.select) ? query.select : query.select.split(','); // Move the parts into a set for easy access and deduplication\n\n const selectedSet = new Set(allSelects); // If we already select all of `sys` we can just return\n // since we're anyway fetching everything that is needed\n\n if (selectedSet.has('sys')) {\n return query;\n } // We don't select `sys` so we need to ensure the minimum set\n\n\n selectedSet.add('sys.id');\n selectedSet.add('sys.type'); // Reassign the normalized sys properties\n\n return _objectSpread(_objectSpread({}, query), {}, {\n select: [...selectedSet].join(',')\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ValidationError = void 0;\nexports.default = validateTimestamp;\n\nclass ValidationError extends Error {\n constructor(name, message) {\n super(`Invalid \"${name}\" provided, ` + message);\n this.name = 'ValidationError';\n }\n\n}\n\nexports.ValidationError = ValidationError;\n\nfunction validateTimestamp(name, timestamp, options) {\n options = options || {};\n\n if (typeof timestamp !== 'number') {\n throw new ValidationError(name, `only numeric values are allowed for timestamps, provided type was \"${typeof timestamp}\"`);\n }\n\n if (options.maximum && timestamp > options.maximum) {\n throw new ValidationError(name, `value (${timestamp}) cannot be further in the future than expected maximum (${options.maximum})`);\n }\n\n if (options.now && timestamp < options.now) {\n throw new ValidationError(name, `value (${timestamp}) cannot be in the past, current time was ${options.now}`);\n }\n}","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global['fast-copy'] = factory());\n}(this, (function () { 'use strict';\n\n var toStringFunction = Function.prototype.toString;\r\n var create = Object.create, defineProperty = Object.defineProperty, getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, getOwnPropertyNames = Object.getOwnPropertyNames, getOwnPropertySymbols = Object.getOwnPropertySymbols, getPrototypeOf = Object.getPrototypeOf;\r\n var _a = Object.prototype, hasOwnProperty = _a.hasOwnProperty, propertyIsEnumerable = _a.propertyIsEnumerable;\r\n /**\r\n * @enum\r\n *\r\n * @const {Object} SUPPORTS\r\n *\r\n * @property {boolean} SYMBOL_PROPERTIES are symbol properties supported\r\n * @property {boolean} WEAKMAP is WeakMap supported\r\n */\r\n var SUPPORTS = {\r\n SYMBOL_PROPERTIES: typeof getOwnPropertySymbols === 'function',\r\n WEAKMAP: typeof WeakMap === 'function',\r\n };\r\n /**\r\n * @function createCache\r\n *\r\n * @description\r\n * get a new cache object to prevent circular references\r\n *\r\n * @returns the new cache object\r\n */\r\n var createCache = function () {\r\n if (SUPPORTS.WEAKMAP) {\r\n return new WeakMap();\r\n }\r\n // tiny implementation of WeakMap\r\n var object = create({\r\n has: function (key) { return !!~object._keys.indexOf(key); },\r\n set: function (key, value) {\r\n object._keys.push(key);\r\n object._values.push(value);\r\n },\r\n get: function (key) { return object._values[object._keys.indexOf(key)]; },\r\n });\r\n object._keys = [];\r\n object._values = [];\r\n return object;\r\n };\r\n /**\r\n * @function getCleanClone\r\n *\r\n * @description\r\n * get an empty version of the object with the same prototype it has\r\n *\r\n * @param object the object to build a clean clone from\r\n * @param realm the realm the object resides in\r\n * @returns the empty cloned object\r\n */\r\n var getCleanClone = function (object, realm) {\r\n if (!object.constructor) {\r\n return create(null);\r\n }\r\n var Constructor = object.constructor;\r\n var prototype = object.__proto__ || getPrototypeOf(object);\r\n if (Constructor === realm.Object) {\r\n return prototype === realm.Object.prototype ? {} : create(prototype);\r\n }\r\n if (~toStringFunction.call(Constructor).indexOf('[native code]')) {\r\n try {\r\n return new Constructor();\r\n }\r\n catch (_a) { }\r\n }\r\n return create(prototype);\r\n };\r\n /**\r\n * @function getObjectCloneLoose\r\n *\r\n * @description\r\n * get a copy of the object based on loose rules, meaning all enumerable keys\r\n * and symbols are copied, but property descriptors are not considered\r\n *\r\n * @param object the object to clone\r\n * @param realm the realm the object resides in\r\n * @param handleCopy the function that handles copying the object\r\n * @returns the copied object\r\n */\r\n var getObjectCloneLoose = function (object, realm, handleCopy, cache) {\r\n var clone = getCleanClone(object, realm);\r\n // set in the cache immediately to be able to reuse the object recursively\r\n cache.set(object, clone);\r\n for (var key in object) {\r\n if (hasOwnProperty.call(object, key)) {\r\n clone[key] = handleCopy(object[key], cache);\r\n }\r\n }\r\n if (SUPPORTS.SYMBOL_PROPERTIES) {\r\n var symbols = getOwnPropertySymbols(object);\r\n var length_1 = symbols.length;\r\n if (length_1) {\r\n for (var index = 0, symbol = void 0; index < length_1; index++) {\r\n symbol = symbols[index];\r\n if (propertyIsEnumerable.call(object, symbol)) {\r\n clone[symbol] = handleCopy(object[symbol], cache);\r\n }\r\n }\r\n }\r\n }\r\n return clone;\r\n };\r\n /**\r\n * @function getObjectCloneStrict\r\n *\r\n * @description\r\n * get a copy of the object based on strict rules, meaning all keys and symbols\r\n * are copied based on the original property descriptors\r\n *\r\n * @param object the object to clone\r\n * @param realm the realm the object resides in\r\n * @param handleCopy the function that handles copying the object\r\n * @returns the copied object\r\n */\r\n var getObjectCloneStrict = function (object, realm, handleCopy, cache) {\r\n var clone = getCleanClone(object, realm);\r\n // set in the cache immediately to be able to reuse the object recursively\r\n cache.set(object, clone);\r\n var properties = SUPPORTS.SYMBOL_PROPERTIES\r\n ? getOwnPropertyNames(object).concat(getOwnPropertySymbols(object))\r\n : getOwnPropertyNames(object);\r\n var length = properties.length;\r\n if (length) {\r\n for (var index = 0, property = void 0, descriptor = void 0; index < length; index++) {\r\n property = properties[index];\r\n if (property !== 'callee' && property !== 'caller') {\r\n descriptor = getOwnPropertyDescriptor(object, property);\r\n if (descriptor) {\r\n // Only clone the value if actually a value, not a getter / setter.\r\n if (!descriptor.get && !descriptor.set) {\r\n descriptor.value = handleCopy(object[property], cache);\r\n }\r\n try {\r\n defineProperty(clone, property, descriptor);\r\n }\r\n catch (error) {\r\n // Tee above can fail on node in edge cases, so fall back to the loose assignment.\r\n clone[property] = descriptor.value;\r\n }\r\n }\r\n else {\r\n // In extra edge cases where the property descriptor cannot be retrived, fall back to\r\n // the loose assignment.\r\n clone[property] = handleCopy(object[property], cache);\r\n }\r\n }\r\n }\r\n }\r\n return clone;\r\n };\r\n /**\r\n * @function getRegExpFlags\r\n *\r\n * @description\r\n * get the flags to apply to the copied regexp\r\n *\r\n * @param regExp the regexp to get the flags of\r\n * @returns the flags for the regexp\r\n */\r\n var getRegExpFlags = function (regExp) {\r\n var flags = '';\r\n if (regExp.global) {\r\n flags += 'g';\r\n }\r\n if (regExp.ignoreCase) {\r\n flags += 'i';\r\n }\r\n if (regExp.multiline) {\r\n flags += 'm';\r\n }\r\n if (regExp.unicode) {\r\n flags += 'u';\r\n }\r\n if (regExp.sticky) {\r\n flags += 'y';\r\n }\r\n return flags;\r\n };\n\n // utils\r\n var isArray = Array.isArray;\r\n var GLOBAL_THIS = (function () {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n if (console && console.error) {\r\n console.error('Unable to locate global object, returning \"this\".');\r\n }\r\n })();\r\n /**\r\n * @function copy\r\n *\r\n * @description\r\n * copy an object deeply as much as possible\r\n *\r\n * If `strict` is applied, then all properties (including non-enumerable ones)\r\n * are copied with their original property descriptors on both objects and arrays.\r\n *\r\n * The object is compared to the global constructors in the `realm` provided,\r\n * and the native constructor is always used to ensure that extensions of native\r\n * objects (allows in ES2015+) are maintained.\r\n *\r\n * @param object the object to copy\r\n * @param [options] the options for copying with\r\n * @param [options.isStrict] should the copy be strict\r\n * @param [options.realm] the realm (this) object the object is copied from\r\n * @returns the copied object\r\n */\r\n function copy(object, options) {\r\n // manually coalesced instead of default parameters for performance\r\n var isStrict = !!(options && options.isStrict);\r\n var realm = (options && options.realm) || GLOBAL_THIS;\r\n var getObjectClone = isStrict\r\n ? getObjectCloneStrict\r\n : getObjectCloneLoose;\r\n /**\r\n * @function handleCopy\r\n *\r\n * @description\r\n * copy the object recursively based on its type\r\n *\r\n * @param object the object to copy\r\n * @returns the copied object\r\n */\r\n var handleCopy = function (object, cache) {\r\n if (!object || typeof object !== 'object') {\r\n return object;\r\n }\r\n if (cache.has(object)) {\r\n return cache.get(object);\r\n }\r\n var Constructor = object.constructor;\r\n // plain objects\r\n if (Constructor === realm.Object) {\r\n return getObjectClone(object, realm, handleCopy, cache);\r\n }\r\n var clone;\r\n // arrays\r\n if (isArray(object)) {\r\n // if strict, include non-standard properties\r\n if (isStrict) {\r\n return getObjectCloneStrict(object, realm, handleCopy, cache);\r\n }\r\n var length_1 = object.length;\r\n clone = new Constructor();\r\n cache.set(object, clone);\r\n for (var index = 0; index < length_1; index++) {\r\n clone[index] = handleCopy(object[index], cache);\r\n }\r\n return clone;\r\n }\r\n // dates\r\n if (object instanceof realm.Date) {\r\n return new Constructor(object.getTime());\r\n }\r\n // regexps\r\n if (object instanceof realm.RegExp) {\r\n clone = new Constructor(object.source, object.flags || getRegExpFlags(object));\r\n clone.lastIndex = object.lastIndex;\r\n return clone;\r\n }\r\n // maps\r\n if (realm.Map && object instanceof realm.Map) {\r\n clone = new Constructor();\r\n cache.set(object, clone);\r\n object.forEach(function (value, key) {\r\n clone.set(key, handleCopy(value, cache));\r\n });\r\n return clone;\r\n }\r\n // sets\r\n if (realm.Set && object instanceof realm.Set) {\r\n clone = new Constructor();\r\n cache.set(object, clone);\r\n object.forEach(function (value) {\r\n clone.add(handleCopy(value, cache));\r\n });\r\n return clone;\r\n }\r\n // blobs\r\n if (realm.Blob && object instanceof realm.Blob) {\r\n return object.slice(0, object.size, object.type);\r\n }\r\n // buffers (node-only)\r\n if (realm.Buffer && realm.Buffer.isBuffer(object)) {\r\n clone = realm.Buffer.allocUnsafe\r\n ? realm.Buffer.allocUnsafe(object.length)\r\n : new Constructor(object.length);\r\n cache.set(object, clone);\r\n object.copy(clone);\r\n return clone;\r\n }\r\n // arraybuffers / dataviews\r\n if (realm.ArrayBuffer) {\r\n // dataviews\r\n if (realm.ArrayBuffer.isView(object)) {\r\n clone = new Constructor(object.buffer.slice(0));\r\n cache.set(object, clone);\r\n return clone;\r\n }\r\n // arraybuffers\r\n if (object instanceof realm.ArrayBuffer) {\r\n clone = object.slice(0);\r\n cache.set(object, clone);\r\n return clone;\r\n }\r\n }\r\n // if the object cannot / should not be cloned, don't\r\n if (\r\n // promise-like\r\n typeof object.then === 'function' ||\r\n // errors\r\n object instanceof Error ||\r\n // weakmaps\r\n (realm.WeakMap && object instanceof realm.WeakMap) ||\r\n // weaksets\r\n (realm.WeakSet && object instanceof realm.WeakSet)) {\r\n return object;\r\n }\r\n // assume anything left is a custom constructor\r\n return getObjectClone(object, realm, handleCopy, cache);\r\n };\r\n return handleCopy(object, createCache());\r\n }\r\n // Adding reference to allow usage in CommonJS libraries compiled using TSC, which\r\n // expects there to be a default property on the exported object. See\r\n // [#37](https://github.com/planttheidea/fast-copy/issues/37) for details.\r\n copy.default = copy;\r\n /**\r\n * @function strictCopy\r\n *\r\n * @description\r\n * copy the object with `strict` option pre-applied\r\n *\r\n * @param object the object to copy\r\n * @param [options] the options for copying with\r\n * @param [options.realm] the realm (this) object the object is copied from\r\n * @returns the copied object\r\n */\r\n copy.strict = function strictCopy(object, options) {\r\n return copy(object, {\r\n isStrict: true,\r\n realm: options ? options.realm : void 0,\r\n });\r\n };\n\n return copy;\n\n})));\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","exports = module.exports = stringify\nexports.getSerialize = serializer\n\nfunction stringify(obj, replacer, spaces, cycleReplacer) {\n return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)\n}\n\nfunction serializer(replacer, cycleReplacer) {\n var stack = [], keys = []\n\n if (cycleReplacer == null) cycleReplacer = function(key, value) {\n if (stack[0] === value) return \"[Circular ~]\"\n return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\"\n }\n\n return function(key, value) {\n if (stack.length > 0) {\n var thisPos = stack.indexOf(this)\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\n if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)\n }\n else stack.push(value)\n\n return replacer == null ? value : replacer.call(this, key, value)\n }\n}\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) ||\n objectToString.call(value) != objectTag || isHostObject(value)) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return (typeof Ctor == 'function' &&\n Ctor instanceof Ctor && funcToString.call(Ctor) == objectCtorString);\n}\n\nmodule.exports = isPlainObject;\n","/**\n * lodash 4.0.1 (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright 2012-2016 The Dojo Foundation \n * Based on Underscore.js 1.8.3 \n * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Available under MIT license \n */\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @type Function\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar match = String.prototype.match;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\nvar toStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag !== 'undefined' ? Symbol.toStringTag : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('options \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n return String(obj);\n }\n if (typeof obj === 'bigint') {\n return String(obj) + 'n';\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = seen.slice();\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + keys.join(', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? String(obj).replace(/^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + String(obj.nodeName).toLowerCase();\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + xs.join(', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + parts.join(', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? toStr(obj).slice(8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + [].concat(stringTag || [], protoTag || []).join(': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + ys.join(', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return String(s).replace(/\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString(str.slice(0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = str.replace(/(['\\\\])/g, '\\\\$1').replace(/[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + n.toString(16).toUpperCase();\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : entries.join(', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = Array(opts.indent + 1).join(' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: Array(depth + 1).join(baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + xs.join(',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ((/[^\\w$]/).test(key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nclass AbortError extends Error {\n\tconstructor() {\n\t\tsuper('Throttled function aborted');\n\t\tthis.name = 'AbortError';\n\t}\n}\n\nconst pThrottle = ({limit, interval, strict}) => {\n\tif (!Number.isFinite(limit)) {\n\t\tthrow new TypeError('Expected `limit` to be a finite number');\n\t}\n\n\tif (!Number.isFinite(interval)) {\n\t\tthrow new TypeError('Expected `interval` to be a finite number');\n\t}\n\n\tconst queue = new Map();\n\n\tlet currentTick = 0;\n\tlet activeCount = 0;\n\n\tfunction windowedDelay() {\n\t\tconst now = Date.now();\n\n\t\tif ((now - currentTick) > interval) {\n\t\t\tactiveCount = 1;\n\t\t\tcurrentTick = now;\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (activeCount < limit) {\n\t\t\tactiveCount++;\n\t\t} else {\n\t\t\tcurrentTick += interval;\n\t\t\tactiveCount = 1;\n\t\t}\n\n\t\treturn currentTick - now;\n\t}\n\n\tconst strictTicks = [];\n\n\tfunction strictDelay() {\n\t\tconst now = Date.now();\n\n\t\tif (strictTicks.length < limit) {\n\t\t\tstrictTicks.push(now);\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst earliestTime = strictTicks.shift() + interval;\n\n\t\tif (now >= earliestTime) {\n\t\t\tstrictTicks.push(now);\n\t\t\treturn 0;\n\t\t}\n\n\t\tstrictTicks.push(earliestTime);\n\t\treturn earliestTime - now;\n\t}\n\n\tconst getDelay = strict ? strictDelay : windowedDelay;\n\n\treturn function_ => {\n\t\tconst throttled = function (...args) {\n\t\t\tif (!throttled.isEnabled) {\n\t\t\t\treturn (async () => function_.apply(this, args))();\n\t\t\t}\n\n\t\t\tlet timeout;\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst execute = () => {\n\t\t\t\t\tresolve(function_.apply(this, args));\n\t\t\t\t\tqueue.delete(timeout);\n\t\t\t\t};\n\n\t\t\t\ttimeout = setTimeout(execute, getDelay());\n\n\t\t\t\tqueue.set(timeout, reject);\n\t\t\t});\n\t\t};\n\n\t\tthrottled.abort = () => {\n\t\t\tfor (const timeout of queue.keys()) {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\tqueue.get(timeout)(new AbortError());\n\t\t\t}\n\n\t\t\tqueue.clear();\n\t\t\tstrictTicks.splice(0, strictTicks.length);\n\t\t};\n\n\t\tthrottled.isEnabled = true;\n\n\t\treturn throttled;\n\t};\n};\n\nmodule.exports = pThrottle;\nmodule.exports.AbortError = AbortError;\n","/**\n * Copyright (c) 2014-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\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nexport class BehaviorSubject extends Subject {\n constructor(_value) {\n super();\n this._value = _value;\n }\n get value() {\n return this.getValue();\n }\n _subscribe(subscriber) {\n const subscription = super._subscribe(subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n }\n getValue() {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n }\n next(value) {\n super.next(this._value = value);\n }\n}\n","import { identity } from './identity';\nexport function pipe(...fns) {\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce((prev, fn) => fn(prev), input);\n };\n}\n","import { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nexport class Observable {\n constructor(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n lift(operator) {\n const observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n }\n subscribe(observerOrNext, error, complete) {\n const { operator } = this;\n const sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n }\n _trySubscribe(sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n forEach(next, promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let subscription;\n subscription = this.subscribe((value) => {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n }\n _subscribe(subscriber) {\n const { source } = this;\n return source && source.subscribe(subscriber);\n }\n [Symbol_observable]() {\n return this;\n }\n pipe(...operations) {\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n }\n toPromise(promiseCtor) {\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor((resolve, reject) => {\n let value;\n this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value));\n });\n }\n}\nObservable.create = (subscribe) => {\n return new Observable(subscribe);\n};\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n","import { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n","import { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n const { closed, destination, isStopped } = observer;\n if (closed || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n","import { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport const empty = {\n closed: true,\n next(value) { },\n error(err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete() { }\n};\n","import { Subscriber } from './Subscriber';\nexport class OuterSubscriber extends Subscriber {\n notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error, innerSub) {\n this.destination.error(error);\n }\n notifyComplete(innerSub) {\n this.destination.complete();\n }\n}\n","import { Subscription } from './Subscription';\nexport class SubjectSubscription extends Subscription {\n constructor(subject, subscriber) {\n super();\n this.subject = subject;\n this.subscriber = subscriber;\n this.closed = false;\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.closed = true;\n const subject = this.subject;\n const observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n const subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n }\n}\n","import { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nexport class SubjectSubscriber extends Subscriber {\n constructor(destination) {\n super(destination);\n this.destination = destination;\n }\n}\nexport class Subject extends Observable {\n constructor() {\n super();\n this.observers = [];\n this.closed = false;\n this.isStopped = false;\n this.hasError = false;\n this.thrownError = null;\n }\n [rxSubscriberSymbol]() {\n return new SubjectSubscriber(this);\n }\n lift(operator) {\n const subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n }\n next(value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n }\n error(err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n }\n complete() {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n const { observers } = this;\n const len = observers.length;\n const copy = observers.slice();\n for (let i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n }\n unsubscribe() {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n }\n _trySubscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return super._trySubscribe(subscriber);\n }\n }\n _subscribe(subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n }\n asObservable() {\n const observable = new Observable();\n observable.source = this;\n return observable;\n }\n}\nSubject.create = (destination, source) => {\n return new AnonymousSubject(destination, source);\n};\nexport class AnonymousSubject extends Subject {\n constructor(destination, source) {\n super();\n this.destination = destination;\n this.source = source;\n }\n next(value) {\n const { destination } = this;\n if (destination && destination.next) {\n destination.next(value);\n }\n }\n error(err) {\n const { destination } = this;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n }\n complete() {\n const { destination } = this;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n }\n _subscribe(subscriber) {\n const { source } = this;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n }\n}\n","import { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport class Subscriber extends Subscription {\n constructor(destinationOrNext, error, complete) {\n super();\n this.syncErrorValue = null;\n this.syncErrorThrown = false;\n this.syncErrorThrowable = false;\n this.isStopped = false;\n switch (arguments.length) {\n case 0:\n this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n this.destination = destinationOrNext;\n destinationOrNext.add(this);\n }\n else {\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext);\n }\n break;\n }\n default:\n this.syncErrorThrowable = true;\n this.destination = new SafeSubscriber(this, destinationOrNext, error, complete);\n break;\n }\n }\n [rxSubscriberSymbol]() { return this; }\n static create(next, error, complete) {\n const subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n }\n next(value) {\n if (!this.isStopped) {\n this._next(value);\n }\n }\n error(err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n }\n complete() {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n }\n unsubscribe() {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n super.unsubscribe();\n }\n _next(value) {\n this.destination.next(value);\n }\n _error(err) {\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.destination.complete();\n this.unsubscribe();\n }\n _unsubscribeAndRecycle() {\n const { _parentOrParents } = this;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n }\n}\nexport class SafeSubscriber extends Subscriber {\n constructor(_parentSubscriber, observerOrNext, error, complete) {\n super();\n this._parentSubscriber = _parentSubscriber;\n let next;\n let context = this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = this.unsubscribe.bind(this);\n }\n }\n this._context = context;\n this._next = next;\n this._error = error;\n this._complete = complete;\n }\n next(value) {\n if (!this.isStopped && this._next) {\n const { _parentSubscriber } = this;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n }\n error(err) {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n const { useDeprecatedSynchronousErrorHandling } = config;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n }\n complete() {\n if (!this.isStopped) {\n const { _parentSubscriber } = this;\n if (this._complete) {\n const wrappedComplete = () => this._complete.call(this._context);\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n }\n __tryOrUnsub(fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n }\n __tryOrSetError(parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n }\n _unsubscribe() {\n const { _parentSubscriber } = this;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n }\n}\n","import { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nexport class Subscription {\n constructor(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._ctorUnsubscribe = true;\n this._unsubscribe = unsubscribe;\n }\n }\n unsubscribe() {\n let errors;\n if (this.closed) {\n return;\n }\n let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = this;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (let index = 0; index < _parentOrParents.length; ++index) {\n const parent = _parentOrParents[index];\n parent.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n if (_ctorUnsubscribe) {\n this._unsubscribe = undefined;\n }\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n let index = -1;\n let len = _subscriptions.length;\n while (++index < len) {\n const sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n add(teardown) {\n let subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n const tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n let { _parentOrParents } = subscription;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n const subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n }\n remove(subscription) {\n const subscriptions = this._subscriptions;\n if (subscriptions) {\n const subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n }\n}\nSubscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n}(new Subscription()));\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []);\n}\n","const UnsubscriptionErrorImpl = (() => {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n `${errors.length} errors occurred during unsubscription:\n${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\\n ')}` : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport const UnsubscriptionError = UnsubscriptionErrorImpl;\n","let _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport const config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n const error = new Error();\n console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n","import { Subscriber } from './Subscriber';\nimport { Observable } from './Observable';\nimport { subscribeTo } from './util/subscribeTo';\nexport class SimpleInnerSubscriber extends Subscriber {\n constructor(parent) {\n super();\n this.parent = parent;\n }\n _next(value) {\n this.parent.notifyNext(value);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete();\n this.unsubscribe();\n }\n}\nexport class ComplexInnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this);\n }\n _error(error) {\n this.parent.notifyError(error);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\nexport class SimpleOuterSubscriber extends Subscriber {\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyError(err) {\n this.destination.error(err);\n }\n notifyComplete() {\n this.destination.complete();\n }\n}\nexport class ComplexOuterSubscriber extends Subscriber {\n notifyNext(_outerValue, innerValue, _outerIndex, _innerSub) {\n this.destination.next(innerValue);\n }\n notifyError(error) {\n this.destination.error(error);\n }\n notifyComplete(_innerSub) {\n this.destination.complete();\n }\n}\nexport function innerSubscribe(result, innerSubscriber) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n let subscription;\n try {\n subscription = subscribeTo(result)(innerSubscriber);\n }\n catch (error) {\n innerSubscriber.error(error);\n }\n return subscription;\n}\n","import { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nexport class ConnectableObservable extends Observable {\n constructor(source, subjectFactory) {\n super();\n this.source = source;\n this.subjectFactory = subjectFactory;\n this._refCount = 0;\n this._isComplete = false;\n }\n _subscribe(subscriber) {\n return this.getSubject().subscribe(subscriber);\n }\n getSubject() {\n const subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n }\n connect() {\n let connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n }\n refCount() {\n return higherOrderRefCount()(this);\n }\n}\nexport const connectableObservableDescriptor = (() => {\n const connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nclass ConnectableSubscriber extends SubjectSubscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _error(err) {\n this._unsubscribe();\n super._error(err);\n }\n _complete() {\n this.connectable._isComplete = true;\n this._unsubscribe();\n super._complete();\n }\n _unsubscribe() {\n const connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n const connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n }\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nconst NONE = {};\nexport function combineLatest(...observables) {\n let resultSelector = undefined;\n let scheduler = undefined;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nexport class CombineLatestOperator {\n constructor(resultSelector) {\n this.resultSelector = resultSelector;\n }\n call(subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n }\n}\nexport class CombineLatestSubscriber extends OuterSubscriber {\n constructor(destination, resultSelector) {\n super(destination);\n this.resultSelector = resultSelector;\n this.active = 0;\n this.values = [];\n this.observables = [];\n }\n _next(observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n }\n _complete() {\n const observables = this.observables;\n const len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (let i = 0; i < len; i++) {\n const observable = observables[i];\n this.add(subscribeToResult(this, observable, undefined, i));\n }\n }\n }\n notifyComplete(unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n }\n notifyNext(_outerValue, innerValue, outerIndex) {\n const values = this.values;\n const oldVal = values[outerIndex];\n const toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n }\n _tryResultSelector(values) {\n let result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n","import { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat(...observables) {\n return concatAll()(of(...observables));\n}\n","import { Observable } from '../Observable';\nexport const EMPTY = new Observable(subscriber => subscriber.complete());\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(subscriber => scheduler.schedule(() => subscriber.complete()));\n}\n","import { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin(...sources) {\n if (sources.length === 1) {\n const first = sources[0];\n if (isArray(first)) {\n return forkJoinInternal(first, null);\n }\n if (isObject(first) && Object.getPrototypeOf(first) === Object.prototype) {\n const keys = Object.keys(first);\n return forkJoinInternal(keys.map(key => first[key]), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n const resultSelector = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map((args) => resultSelector(...args)));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(subscriber => {\n const len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n const values = new Array(len);\n let completed = 0;\n let emitted = 0;\n for (let i = 0; i < len; i++) {\n const source = from(sources[i]);\n let hasValue = false;\n subscriber.add(source.subscribe({\n next: value => {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: err => subscriber.error(err),\n complete: () => {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce((result, key, i) => (result[key] = values[i], result), {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n }\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => {\n const observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); },\n error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); },\n complete() { sub.add(scheduler.schedule(() => subscriber.complete())); },\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n sub.add(scheduler.schedule(() => input.then(value => {\n sub.add(scheduler.schedule(() => {\n subscriber.next(value);\n sub.add(scheduler.schedule(() => subscriber.complete()));\n }));\n }, err => {\n sub.add(scheduler.schedule(() => subscriber.error(err)));\n })));\n return sub;\n });\n}\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(subscriber => {\n const sub = new Subscription();\n let iterator;\n sub.add(() => {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(() => {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n let value;\n let done;\n try {\n const result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n","import { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n","import { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period = 0, scheduler = async) {\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(subscriber => {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber, counter: 0, period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n const { subscriber, counter, period } = state;\n subscriber.next(counter);\n this.schedule({ subscriber, counter: counter + 1, period }, period);\n}\n","import { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge(...observables) {\n let concurrent = Number.POSITIVE_INFINITY;\n let scheduler = null;\n let last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n","import { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of(...args) {\n let scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n","import { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(subscriber => subscriber.error(error));\n }\n else {\n return new Observable(subscriber => scheduler.schedule(dispatch, 0, { error, subscriber }));\n }\n}\nfunction dispatch({ error, subscriber }) {\n subscriber.error(error);\n}\n","import { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n const operator = new CatchOperator(selector);\n const caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nclass CatchOperator {\n constructor(selector) {\n this.selector = selector;\n }\n call(subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n }\n}\nclass CatchSubscriber extends SimpleOuterSubscriber {\n constructor(destination, selector, caught) {\n super(destination);\n this.selector = selector;\n this.caught = caught;\n }\n error(err) {\n if (!this.isStopped) {\n let result;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n super.error(err2);\n return;\n }\n this._unsubscribeAndRecycle();\n const innerSubscriber = new SimpleInnerSubscriber(this);\n this.add(innerSubscriber);\n const innerSubscription = innerSubscribe(result, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n this.add(innerSubscription);\n }\n }\n }\n}\n","import { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n","import { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nexport class Notification {\n constructor(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n observe(observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n }\n do(next, error, complete) {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n }\n accept(nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n }\n toObservable() {\n const kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n }\n static createNext(value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n }\n static createError(err) {\n return new Notification('E', undefined, err);\n }\n static createComplete() {\n return Notification.completeNotification;\n }\n}\nNotification.completeNotification = new Notification('C');\nNotification.undefinedValueNotification = new Notification('N', undefined);\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler = async) {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source) => source.lift(new DelayOperator(delayFor, scheduler));\n}\nclass DelayOperator {\n constructor(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\nclass DelaySubscriber extends Subscriber {\n constructor(destination, delay, scheduler) {\n super(destination);\n this.delay = delay;\n this.scheduler = scheduler;\n this.queue = [];\n this.active = false;\n this.errored = false;\n }\n static dispatch(state) {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n }\n _schedule(scheduler) {\n this.active = true;\n const destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n scheduleNotification(notification) {\n if (this.errored === true) {\n return;\n }\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n _next(value) {\n this.scheduleNotification(Notification.createNext(value));\n }\n _error(err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\nclass DelayMessage {\n constructor(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nclass FilterOperator {\n constructor(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n }\n}\nclass FilterSubscriber extends Subscriber {\n constructor(destination, predicate, thisArg) {\n super(destination);\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.count = 0;\n }\n _next(value) {\n let result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return (source) => source.lift(new FinallyOperator(callback));\n}\nclass FinallyOperator {\n constructor(callback) {\n this.callback = callback;\n }\n call(subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n }\n}\nclass FinallySubscriber extends Subscriber {\n constructor(destination, callback) {\n super(destination);\n this.add(new Subscription(callback));\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nexport class MapOperator {\n constructor(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n call(subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n }\n}\nclass MapSubscriber extends Subscriber {\n constructor(destination, project, thisArg) {\n super(destination);\n this.project = project;\n this.count = 0;\n this.thisArg = thisArg || this;\n }\n _next(value) {\n let result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n }\n}\n","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent = Number.POSITIVE_INFINITY) {\n return mergeMap(identity, concurrent);\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function mergeMap(project, resultSelector, concurrent = Number.POSITIVE_INFINITY) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(mergeMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii))), concurrent));\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return (source) => source.lift(new MergeMapOperator(project, concurrent));\n}\nexport class MergeMapOperator {\n constructor(project, concurrent = Number.POSITIVE_INFINITY) {\n this.project = project;\n this.concurrent = concurrent;\n }\n call(observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n }\n}\nexport class MergeMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project, concurrent = Number.POSITIVE_INFINITY) {\n super(destination);\n this.project = project;\n this.concurrent = concurrent;\n this.hasCompleted = false;\n this.buffer = [];\n this.active = 0;\n this.index = 0;\n }\n _next(value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n }\n _tryNext(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result);\n }\n _innerSub(ish) {\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n const innerSubscription = innerSubscribe(ish, innerSubscriber);\n if (innerSubscription !== innerSubscriber) {\n destination.add(innerSubscription);\n }\n }\n _complete() {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n notifyComplete() {\n const buffer = this.buffer;\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n }\n}\nexport const flatMap = mergeMap;\n","import { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nclass RefCountOperator {\n constructor(connectable) {\n this.connectable = connectable;\n }\n call(subscriber, source) {\n const { connectable } = this;\n connectable._refCount++;\n const refCounter = new RefCountSubscriber(subscriber, connectable);\n const subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n }\n}\nclass RefCountSubscriber extends Subscriber {\n constructor(destination, connectable) {\n super(destination);\n this.connectable = connectable;\n }\n _unsubscribe() {\n const { connectable } = this;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n const refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n const { connection } = this;\n const sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n }\n}\n","import { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return (source) => refCount()(multicast(shareSubjectFactory)(source));\n}\n","import { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n let subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n const connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nexport class MulticastOperator {\n constructor(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n call(subscriber, source) {\n const { selector } = this;\n const subject = this.subjectFactory();\n const subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n }\n}\n","import { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith(...array) {\n const scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return (source) => concat(array, source, scheduler);\n }\n else {\n return (source) => concat(array, source);\n }\n}\n","import { map } from './map';\nimport { from } from '../observable/from';\nimport { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return (source) => source.pipe(switchMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));\n }\n return (source) => source.lift(new SwitchMapOperator(project));\n}\nclass SwitchMapOperator {\n constructor(project) {\n this.project = project;\n }\n call(subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n }\n}\nclass SwitchMapSubscriber extends SimpleOuterSubscriber {\n constructor(destination, project) {\n super(destination);\n this.project = project;\n this.index = 0;\n }\n _next(value) {\n let result;\n const index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result);\n }\n _innerSub(result) {\n const innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n const innerSubscriber = new SimpleInnerSubscriber(this);\n const destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = innerSubscribe(result, innerSubscriber);\n if (this.innerSubscription !== innerSubscriber) {\n destination.add(this.innerSubscription);\n }\n }\n _complete() {\n const { innerSubscription } = this;\n if (!innerSubscription || innerSubscription.closed) {\n super._complete();\n }\n this.unsubscribe();\n }\n _unsubscribe() {\n this.innerSubscription = undefined;\n }\n notifyComplete() {\n this.innerSubscription = undefined;\n if (this.isStopped) {\n super._complete();\n }\n }\n notifyNext(innerValue) {\n this.destination.next(innerValue);\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return (source) => {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nclass TakeOperator {\n constructor(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n call(subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n }\n}\nclass TakeSubscriber extends Subscriber {\n constructor(destination, total) {\n super(destination);\n this.total = total;\n this.count = 0;\n }\n _next(value) {\n const total = this.total;\n const count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n }\n}\n","import { innerSubscribe, SimpleInnerSubscriber, SimpleOuterSubscriber } from '../innerSubscribe';\nexport function takeUntil(notifier) {\n return (source) => source.lift(new TakeUntilOperator(notifier));\n}\nclass TakeUntilOperator {\n constructor(notifier) {\n this.notifier = notifier;\n }\n call(subscriber, source) {\n const takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n const notifierSubscription = innerSubscribe(this.notifier, new SimpleInnerSubscriber(takeUntilSubscriber));\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n }\n}\nclass TakeUntilSubscriber extends SimpleOuterSubscriber {\n constructor(destination) {\n super(destination);\n this.seenValue = false;\n }\n notifyNext() {\n this.seenValue = true;\n this.complete();\n }\n notifyComplete() {\n }\n}\n","import { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive = false) {\n return (source) => source.lift(new TakeWhileOperator(predicate, inclusive));\n}\nclass TakeWhileOperator {\n constructor(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n call(subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n }\n}\nclass TakeWhileSubscriber extends Subscriber {\n constructor(destination, predicate, inclusive) {\n super(destination);\n this.predicate = predicate;\n this.inclusive = inclusive;\n this.index = 0;\n }\n _next(value) {\n const destination = this.destination;\n let result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n }\n nextOrComplete(value, predicateResult) {\n const destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n }\n}\n","import { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nclass DoOperator {\n constructor(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n call(subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n }\n}\nclass TapSubscriber extends Subscriber {\n constructor(destination, observerOrNext, error, complete) {\n super(destination);\n this._tapNext = noop;\n this._tapError = noop;\n this._tapComplete = noop;\n this._tapError = error || noop;\n this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n this._context = this;\n this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n this._context = observerOrNext;\n this._tapNext = observerOrNext.next || noop;\n this._tapError = observerOrNext.error || noop;\n this._tapComplete = observerOrNext.complete || noop;\n }\n }\n _next(value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n }\n _error(err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n }\n _complete() {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n }\n}\n","const TimeoutErrorImpl = (() => {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport const TimeoutError = TimeoutErrorImpl;\n","import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';\nexport function timeoutWith(due, withObservable, scheduler = async) {\n return (source) => {\n let absoluteTimeout = isDate(due);\n let waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nclass TimeoutWithOperator {\n constructor(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n }\n}\nclass TimeoutWithSubscriber extends SimpleOuterSubscriber {\n constructor(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n super(destination);\n this.absoluteTimeout = absoluteTimeout;\n this.waitFor = waitFor;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n this.scheduleTimeout();\n }\n static dispatchTimeout(subscriber) {\n const { withObservable } = subscriber;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(innerSubscribe(withObservable, new SimpleInnerSubscriber(subscriber)));\n }\n scheduleTimeout() {\n const { action } = this;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n }\n _next(value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n super._next(value);\n }\n _unsubscribe() {\n this.action = undefined;\n this.scheduler = null;\n this.withObservable = null;\n }\n}\n","import { async } from '../scheduler/async';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\nexport function timeout(due, scheduler = async) {\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n","import { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(subscriber => {\n const sub = new Subscription();\n let i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n","import { Action } from './Action';\nexport class AsyncAction extends Action {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n this.pending = false;\n }\n schedule(state, delay = 0) {\n if (this.closed) {\n return this;\n }\n this.state = state;\n const id = this.id;\n const scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n }\n execute(state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n const error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n }\n _execute(state, delay) {\n let errored = false;\n let errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n }\n _unsubscribe() {\n const id = this.id;\n const scheduler = this.scheduler;\n const actions = scheduler.actions;\n const index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n }\n}\n","import { Subscription } from '../Subscription';\nexport class Action extends Subscription {\n constructor(scheduler, work) {\n super();\n }\n schedule(state, delay = 0) {\n return this;\n }\n}\n","export class Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n schedule(work, delay = 0, state) {\n return new this.SchedulerAction(this, work).schedule(state, delay);\n }\n}\nScheduler.now = () => Date.now();\n","import { Scheduler } from '../Scheduler';\nexport class AsyncScheduler extends Scheduler {\n constructor(SchedulerAction, now = Scheduler.now) {\n super(SchedulerAction, () => {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n });\n this.actions = [];\n this.active = false;\n this.scheduled = undefined;\n }\n schedule(work, delay = 0, state) {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return super.schedule(work, delay, state);\n }\n }\n flush(action) {\n const { actions } = this;\n if (this.active) {\n actions.push(action);\n return;\n }\n let error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport const asyncScheduler = new AsyncScheduler(AsyncAction);\nexport const async = asyncScheduler;\n","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport const iterator = getSymbolIterator();\nexport const $$iterator = iterator;\n","export const observable = (() => typeof Symbol === 'function' && Symbol.observable || '@@observable')();\n","export const rxSubscriber = (() => typeof Symbol === 'function'\n ? Symbol('rxSubscriber')\n : '@@rxSubscriber_' + Math.random())();\nexport const $$rxSubscriber = rxSubscriber;\n","const ArgumentOutOfRangeErrorImpl = (() => {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport const ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n","const ObjectUnsubscribedErrorImpl = (() => {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport const ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n","export function hostReportError(err) {\n setTimeout(() => { throw err; }, 0);\n}\n","export function identity(x) {\n return x;\n}\n","export const isArray = (() => Array.isArray || ((x) => x && typeof x.length === 'number'))();\n","export const isArrayLike = ((x) => x && typeof x.length === 'number' && typeof x !== 'function');\n","export function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n","export function isFunction(x) {\n return typeof x === 'function';\n}\n","import { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n","export function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n","export function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n","export function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n","export function noop() { }\n","import { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeTo = (result) => {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n const value = isObject(result) ? 'an invalid object' : `'${result}'`;\n const msg = `You provided ${value} where a stream was expected.`\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n","import { observable as Symbol_observable } from '../symbol/observable';\nexport const subscribeToObservable = (obj) => (subscriber) => {\n const obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n};\n","import { hostReportError } from './hostReportError';\nexport const subscribeToPromise = (promise) => (subscriber) => {\n promise.then((value) => {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, (err) => subscriber.error(err))\n .then(null, hostReportError);\n return subscriber;\n};\n","import { iterator as Symbol_iterator } from '../symbol/iterator';\nexport const subscribeToIterable = (iterable) => (subscriber) => {\n const iterator = iterable[Symbol_iterator]();\n do {\n let item;\n try {\n item = iterator.next();\n }\n catch (err) {\n subscriber.error(err);\n return subscriber;\n }\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(() => {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n};\n","export const subscribeToArray = (array) => (subscriber) => {\n for (let i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n};\n","import { Subscriber } from './Subscriber';\nexport class InnerSubscriber extends Subscriber {\n constructor(parent, outerValue, outerIndex) {\n super();\n this.parent = parent;\n this.outerValue = outerValue;\n this.outerIndex = outerIndex;\n this.index = 0;\n }\n _next(value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n }\n _error(error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n }\n _complete() {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n }\n}\n","import { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, innerSubscriber = new InnerSubscriber(outerSubscriber, outerValue, outerIndex)) {\n if (innerSubscriber.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(innerSubscriber);\n }\n return subscribeTo(result)(innerSubscriber);\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","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}\n\nmodule.exports = _arrayLikeToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","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\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\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 module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _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}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","module.exports = require(\"regenerator-runtime\");\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction getDefaults() {\n return {\n baseUrl: null,\n breaks: false,\n extensions: null,\n gfm: true,\n headerIds: true,\n headerPrefix: '',\n highlight: null,\n langPrefix: 'language-',\n mangle: true,\n pedantic: false,\n renderer: null,\n sanitize: false,\n sanitizer: null,\n silent: false,\n smartLists: false,\n smartypants: false,\n tokenizer: null,\n walkTokens: null,\n xhtml: false\n };\n}\n\nlet defaults = getDefaults();\n\nfunction changeDefaults(newDefaults) {\n defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = /[&<>\"']/g;\nconst escapeTestNoEncode = /[<>\"']|&(?!#?\\w+;)/;\nconst escapeReplaceNoEncode = /[<>\"']|&(?!#?\\w+;)/g;\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n } else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n\n return html;\n}\n\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\n\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = regex.source || regex;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = val.source || val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\n\nconst nonWordAndColonTest = /[^\\w:]/g;\nconst originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;\nfunction cleanUrl(sanitize, base, href) {\n if (sanitize) {\n let prot;\n try {\n prot = decodeURIComponent(unescape(href))\n .replace(nonWordAndColonTest, '')\n .toLowerCase();\n } catch (e) {\n return null;\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {\n return null;\n }\n }\n if (base && !originIndependentUrl.test(href)) {\n href = resolveUrl(base, href);\n }\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n } catch (e) {\n return null;\n }\n return href;\n}\n\nconst baseUrls = {};\nconst justDomain = /^[^:]+:\\/*[^/]*$/;\nconst protocol = /^([^:]+:)[\\s\\S]*$/;\nconst domain = /^([^:]+:\\/*[^/]*)[\\s\\S]*$/;\n\nfunction resolveUrl(base, href) {\n if (!baseUrls[' ' + base]) {\n // we can ignore everything in base after the last slash of its path component,\n // but we might need to add _that_\n // https://tools.ietf.org/html/rfc3986#section-3\n if (justDomain.test(base)) {\n baseUrls[' ' + base] = base + '/';\n } else {\n baseUrls[' ' + base] = rtrim(base, '/', true);\n }\n }\n base = baseUrls[' ' + base];\n const relativeBase = base.indexOf(':') === -1;\n\n if (href.substring(0, 2) === '//') {\n if (relativeBase) {\n return href;\n }\n return base.replace(protocol, '$1') + href;\n } else if (href.charAt(0) === '/') {\n if (relativeBase) {\n return href;\n }\n return base.replace(domain, '$1') + href;\n } else {\n return base + href;\n }\n}\n\nconst noopTest = { exec: function noopTest() {} };\n\nfunction merge(obj) {\n let i = 1,\n target,\n key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false,\n curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\') escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n } else {\n // add space before unescaped |\n return ' |';\n }\n }),\n cells = row.split(/ \\|/);\n let i = 0;\n\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) { cells.shift(); }\n if (!cells[cells.length - 1].trim()) { cells.pop(); }\n\n if (cells.length > count) {\n cells.splice(count);\n } else {\n while (cells.length < count) cells.push('');\n }\n\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n\n// Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n// /c*$/ is vulnerable to REDOS.\n// invert: Remove suffix of non-c chars instead. Default falsey.\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n } else if (currChar !== c && invert) {\n suffLen++;\n } else {\n break;\n }\n }\n\n return str.substr(0, l - suffLen);\n}\n\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n const l = str.length;\n let level = 0,\n i = 0;\n for (; i < l; i++) {\n if (str[i] === '\\\\') {\n i++;\n } else if (str[i] === b[0]) {\n level++;\n } else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction checkSanitizeDeprecation(opt) {\n if (opt && opt.sanitize && !opt.silent) {\n console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');\n }\n}\n\n// copied from https://stackoverflow.com/a/5450113/806777\nfunction repeatString(pattern, count) {\n if (count < 1) {\n return '';\n }\n let result = '';\n while (count > 1) {\n if (count & 1) {\n result += pattern;\n }\n count >>= 1;\n pattern += pattern;\n }\n return result + pattern;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text, [])\n };\n lexer.state.inLink = false;\n return token;\n } else {\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n }\n}\n\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n const indentToCode = matchIndentToCode[1];\n\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n\n const [indentInNode] = matchIndentInNode;\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n })\n .join('\\n');\n}\n\n/**\n * Tokenizer\n */\nclass Tokenizer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap) {\n if (cap[0].length > 1) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n return { raw: '\\n' };\n }\n }\n\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim() : cap[2],\n text\n };\n }\n }\n\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n } else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text: text,\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ *> ?/gm, '');\n\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens: this.lexer.blockTokens(text, []),\n text\n };\n }\n }\n\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,\n line, lines, itemContents;\n\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?: [^\\\\n]*| *)(?:\\\\n[^\\\\n]*)*(?:\\\\n|$))`);\n\n // Get each top-level item\n while (src) {\n if (this.rules.block.hr.test(src)) { // End list if we encounter an HR (possibly move into itemRegex?)\n break;\n }\n\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n\n lines = cap[2].split('\\n');\n\n if (this.options.pedantic) {\n indent = 2;\n itemContents = lines[0].trimLeft();\n } else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = cap[1].length + (indent > 4 ? 1 : indent); // intented code blocks after 4 spaces; indent is always 1\n itemContents = lines[0].slice(indent - cap[1].length);\n }\n\n blankLine = false;\n raw = cap[0];\n\n if (!lines[0] && /^ *$/.test(lines[1])) { // items begin with at most one blank line\n raw = cap[1] + lines.slice(0, 2).join('\\n') + '\\n';\n list.loose = true;\n lines = [];\n }\n\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])`);\n\n for (i = 1; i < lines.length; i++) {\n line = lines[i];\n\n if (this.options.pedantic) { // Re-align to follow commonmark nesting rules\n line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n\n // End list item if found start of new bullet\n if (nextBulletRegex.test(line)) {\n raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n break;\n }\n\n // Until we encounter a blank line, item contents do not need indentation\n if (!blankLine) {\n if (!line.trim()) { // Check if current line is empty\n blankLine = true;\n }\n\n // Dedent if possible\n if (line.search(/[^ ]/) >= indent) {\n itemContents += '\\n' + line.slice(indent);\n } else {\n itemContents += '\\n' + line;\n }\n continue;\n }\n\n // Dedent this line\n if (line.search(/[^ ]/) >= indent || !line.trim()) {\n itemContents += '\\n' + line.slice(indent);\n continue;\n } else { // Line was not properly indented; end of this item\n raw = cap[1] + lines.slice(0, i).join('\\n') + '\\n';\n break;\n }\n }\n\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n } else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n\n list.items.push({\n type: 'list_item',\n raw: raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents\n });\n\n list.raw += raw;\n src = src.slice(raw.length);\n }\n\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimRight();\n list.items[list.items.length - 1].text = itemContents.trimRight();\n list.raw = list.raw.trimRight();\n\n const l = list.items.length;\n\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (i = 0; i < l; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (list.items[i].tokens.some(t => t.type === 'space')) {\n list.loose = true;\n list.items[i].loose = true;\n }\n }\n\n return list;\n }\n }\n\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n raw: cap[0],\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n };\n if (this.options.sanitize) {\n token.type = 'paragraph';\n token.text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);\n token.tokens = [];\n this.lexer.inline(token.text, token.tokens);\n }\n return token;\n }\n }\n\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href: cap[2],\n title: cap[3]\n };\n }\n }\n\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n const item = {\n type: 'table',\n header: splitCells(cap[1]).map(c => { return { text: c }; }),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n rows: cap[3] ? cap[3].replace(/\\n$/, '').split('\\n') : []\n };\n\n if (item.header.length === item.align.length) {\n item.raw = cap[0];\n\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });\n }\n\n // parse child tokens inside headers and cells\n\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = [];\n this.lexer.inlineTokens(item.header[j].text, item.header[j].tokens);\n }\n\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = [];\n this.lexer.inlineTokens(row[k].text, row[k].tokens);\n }\n }\n\n return item;\n }\n }\n }\n\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n const token = {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const token = {\n type: 'paragraph',\n raw: cap[0],\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n const token = {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: []\n };\n this.lexer.inline(token.text, token.tokens);\n return token;\n }\n }\n\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n } else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n\n return {\n type: this.options.sanitize\n ? 'text'\n : 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n text: this.options.sanitize\n ? (this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0]))\n : cap[0]\n };\n }\n }\n\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n } else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n\n if (link) {\n href = link[1];\n title = link[3];\n }\n } else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n } else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link || !link.href) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match) return;\n\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u)) return;\n\n const nextChar = match[1] || match[2] || '';\n\n if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {\n const lLength = match[0].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n\n if (!rDelim) continue; // skip single * in __abc*abc__\n\n rLength = rDelim.length;\n\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n } else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n\n delimTotal -= rLength;\n\n if (delimTotal > 0) continue; // Haven't found enough closing delimiters\n\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = src.slice(1, lLength + match.index + rLength);\n return {\n type: 'em',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = src.slice(2, lLength + match.index + rLength - 1);\n return {\n type: 'strong',\n raw: src.slice(0, lLength + match.index + rLength + 1),\n text,\n tokens: this.lexer.inlineTokens(text, [])\n };\n }\n }\n }\n\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2], [])\n };\n }\n }\n\n autolink(src, mangle) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);\n href = 'mailto:' + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n url(src, mangle) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);\n href = 'mailto:' + text;\n } else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + text;\n } else {\n href = text;\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n\n inlineText(src, smartypants) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];\n } else {\n text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*\\n)|~{3,})([^\\n]*)\\n(?:|([\\s\\S]*?)\\n)(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)( [^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *\\n? *]+)>?(?:(?: +\\n? *| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^([^\\n]+)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\n\nblock._label = /(?!\\s*\\])(?:\\\\[\\[\\]]|[^\\[\\]])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\n\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\n\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\n\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\n\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n table: '^ *([^\\\\n ].*\\\\|.*)\\\\n' // Header\n + ' {0,3}(?:\\\\| *)?(:?-+:? *(?:\\\\| *:?-+:? *)*)(?:\\\\| *)?' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n});\n\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\n\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6} ')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\n\nblock.pedantic = merge({}, block.normal, {\n html: edit(\n '^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n});\n\n/**\n * Inline-Level Grammar\n */\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^', // CDATA section\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(?!\\s*\\])((?:\\\\[\\[\\]]?|[^\\[\\]\\\\])+)\\]/,\n nolink: /^!?\\[(?!\\s*\\])((?:\\[[^\\[\\]]*\\]|\\\\[\\[\\]]|[^\\[\\]])*)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:([punct_])|[^\\s*]))|^_+(?:([punct*])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // () Skip orphan delim inside strong (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a\n rDelimAst: /^[^_*]*?\\_\\_[^_*]*?\\*[^_*]*?(?=\\_\\_)|[punct_](\\*+)(?=[\\s]|$)|[^punct*_\\s](\\*+)(?=[punct_\\s]|$)|[punct_\\s](\\*+)(?=[^punct*_\\s])|[\\s](\\*+)(?=[punct_])|[punct_](\\*+)(?=[punct_])|[^punct*_\\s](\\*+)(?=[^punct*_\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?\\_[^_*]*?(?=\\*\\*)|[punct*](\\_+)(?=[\\s]|$)|[^punct*_\\s](\\_+)(?=[punct*\\s]|$)|[punct*\\s](\\_+)(?=[^punct*_\\s])|[\\s](\\_+)(?=[punct*])|[punct*](\\_+)(?=[punct*])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\?@\\\\[\\\\]`^{|}~';\ninline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();\n\n// sequences em should skip over [title](link), `code`, \ninline.blockSkip = /\\[[^\\]]*?\\]\\([^\\)]*?\\)|`[^`]*?`|<[^>]*?>/g;\ninline.escapedEmSt = /\\\\\\*|\\\\_/g;\n\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\n\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim)\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\n\ninline._escapes = /\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/g;\n\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\n\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\n\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\n\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\n\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\n\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .getRegex();\n\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n}\n\n/**\n * Block Lexer\n */\nclass Lexer {\n constructor(options) {\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || defaults;\n this.options.tokenizer = this.options.tokenizer || new Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n } else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n } else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new Lexer(options);\n return lexer.lex(src);\n }\n\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new Lexer(options);\n return lexer.inlineTokens(src);\n }\n\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ');\n\n this.blockTokens(src, this.tokens);\n\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n\n return this.tokens;\n }\n\n /**\n * Lexing\n */\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/^ +$/gm, '');\n }\n let token, lastToken, cutSrc, lastParagraphClipped;\n\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.type) {\n tokens.push(token);\n }\n continue;\n }\n\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n this.state.top = true;\n return tokens;\n }\n\n inline(src, tokens) {\n this.inlineQueue.push({ src, tokens });\n }\n\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n\n // Mask out escaped em & strong delimiters\n while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);\n }\n\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // autolink\n if (token = this.tokenizer.autolink(src, mangle)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach(function(getStartIndex) {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n } else {\n tokens.push(token);\n }\n continue;\n }\n\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass Renderer {\n constructor(options) {\n this.options = options || defaults;\n }\n\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/\\S*/)[0];\n if (this.options.highlight) {\n const out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n code = code.replace(/\\n$/, '') + '\\n';\n\n if (!lang) {\n return '
    '\n        + (escaped ? code : escape(code, true))\n        + '
    \\n';\n }\n\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '
    \\n';\n }\n\n blockquote(quote) {\n return '
    \\n' + quote + '
    \\n';\n }\n\n html(html) {\n return html;\n }\n\n heading(text, level, raw, slugger) {\n if (this.options.headerIds) {\n return ''\n + text\n + '\\n';\n }\n // ignore IDs\n return '' + text + '\\n';\n }\n\n hr() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n }\n\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul',\n startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n\n listitem(text) {\n return '
  • ' + text + '
  • \\n';\n }\n\n checkbox(checked) {\n return ' ';\n }\n\n paragraph(text) {\n return '

    ' + text + '

    \\n';\n }\n\n table(header, body) {\n if (body) body = '' + body + '';\n\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n\n tablerow(content) {\n return '\\n' + content + '\\n';\n }\n\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? '<' + type + ' align=\"' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n }\n\n // span level renderer\n strong(text) {\n return '' + text + '';\n }\n\n em(text) {\n return '' + text + '';\n }\n\n codespan(text) {\n return '' + text + '';\n }\n\n br() {\n return this.options.xhtml ? '
    ' : '
    ';\n }\n\n del(text) {\n return '' + text + '';\n }\n\n link(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n let out = '
    ';\n return out;\n }\n\n image(href, title, text) {\n href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);\n if (href === null) {\n return text;\n }\n\n let out = '\"'' : '>';\n return out;\n }\n\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n\n em(text) {\n return text;\n }\n\n codespan(text) {\n return text;\n }\n\n del(text) {\n return text;\n }\n\n html(text) {\n return text;\n }\n\n text(text) {\n return text;\n }\n\n link(href, title, text) {\n return '' + text;\n }\n\n image(href, title, text) {\n return '' + text;\n }\n\n br() {\n return '';\n }\n}\n\n/**\n * Slugger generates header id\n */\nclass Slugger {\n constructor() {\n this.seen = {};\n }\n\n serialize(value) {\n return value\n .toLowerCase()\n .trim()\n // remove html tags\n .replace(/<[!\\/a-z].*?>/ig, '')\n // remove unwanted chars\n .replace(/[\\u2000-\\u206F\\u2E00-\\u2E7F\\\\'!\"#$%&()*+,./:;<=>?@[\\]^`{|}~]/g, '')\n .replace(/\\s/g, '-');\n }\n\n /**\n * Finds the next safe (unique) slug to use\n */\n getNextSafeSlug(originalSlug, isDryRun) {\n let slug = originalSlug;\n let occurenceAccumulator = 0;\n if (this.seen.hasOwnProperty(slug)) {\n occurenceAccumulator = this.seen[originalSlug];\n do {\n occurenceAccumulator++;\n slug = originalSlug + '-' + occurenceAccumulator;\n } while (this.seen.hasOwnProperty(slug));\n }\n if (!isDryRun) {\n this.seen[originalSlug] = occurenceAccumulator;\n this.seen[slug] = 0;\n }\n return slug;\n }\n\n /**\n * Convert string to unique id\n * @param {object} options\n * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.\n */\n slug(value, options = {}) {\n const slug = this.serialize(value);\n return this.getNextSafeSlug(slug, options.dryrun);\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass Parser {\n constructor(options) {\n this.options = options || defaults;\n this.options.renderer = this.options.renderer || new Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new TextRenderer();\n this.slugger = new Slugger();\n }\n\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new Parser(options);\n return parser.parse(tokens);\n }\n\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new Parser(options);\n return parser.parseInline(tokens);\n }\n\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '',\n i,\n j,\n k,\n l2,\n l3,\n row,\n cell,\n header,\n body,\n token,\n ordered,\n start,\n loose,\n itemBody,\n item,\n checked,\n task,\n checkbox,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(\n this.parseInline(token.tokens),\n token.depth,\n unescape(this.parseInline(token.tokens, this.textRenderer)),\n this.slugger);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token.text,\n token.lang,\n token.escaped);\n continue;\n }\n case 'table': {\n header = '';\n\n // header\n cell = '';\n l2 = token.header.length;\n for (j = 0; j < l2; j++) {\n cell += this.renderer.tablecell(\n this.parseInline(token.header[j].tokens),\n { header: true, align: token.align[j] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n body = '';\n l2 = token.rows.length;\n for (j = 0; j < l2; j++) {\n row = token.rows[j];\n\n cell = '';\n l3 = row.length;\n for (k = 0; k < l3; k++) {\n cell += this.renderer.tablecell(\n this.parseInline(row[k].tokens),\n { header: false, align: token.align[k] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n body = this.parse(token.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n ordered = token.ordered;\n start = token.start;\n loose = token.loose;\n l2 = token.items.length;\n\n body = '';\n for (j = 0; j < l2; j++) {\n item = token.items[j];\n checked = item.checked;\n task = item.task;\n\n itemBody = '';\n if (item.task) {\n checkbox = this.renderer.checkbox(checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n } else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox\n });\n }\n } else {\n itemBody += checkbox;\n }\n }\n\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, checked);\n }\n\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n // TODO parse inline content if parameter markdown=1\n out += this.renderer.html(token.text);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(this.parseInline(token.tokens));\n continue;\n }\n case 'text': {\n body = token.tokens ? this.parseInline(token.tokens) : token.text;\n while (i + 1 < l && tokens[i + 1].type === 'text') {\n token = tokens[++i];\n body += '\\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n\n return out;\n }\n\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '',\n i,\n token,\n ret;\n\n const l = tokens.length;\n for (i = 0; i < l; i++) {\n token = tokens[i];\n\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token.text);\n break;\n }\n case 'html': {\n out += renderer.html(token.text);\n break;\n }\n case 'link': {\n out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));\n break;\n }\n case 'image': {\n out += renderer.image(token.href, token.title, token.text);\n break;\n }\n case 'strong': {\n out += renderer.strong(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'em': {\n out += renderer.em(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n out += renderer.del(this.parseInline(token.tokens, renderer));\n break;\n }\n case 'text': {\n out += renderer.text(token.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return;\n } else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\n/**\n * Marked\n */\nfunction marked(src, opt, callback) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n if (typeof opt === 'function') {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n if (callback) {\n const highlight = opt.highlight;\n let tokens;\n\n try {\n tokens = Lexer.lex(src, opt);\n } catch (e) {\n return callback(e);\n }\n\n const done = function(err) {\n let out;\n\n if (!err) {\n try {\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!tokens.length) return done();\n\n let pending = 0;\n marked.walkTokens(tokens, function(token) {\n if (token.type === 'code') {\n pending++;\n setTimeout(() => {\n highlight(token.text, token.lang, function(err, code) {\n if (err) {\n return done(err);\n }\n if (code != null && code !== token.text) {\n token.text = code;\n token.escaped = true;\n }\n\n pending--;\n if (pending === 0) {\n done();\n }\n });\n }, 0);\n }\n });\n\n if (pending === 0) {\n done();\n }\n\n return;\n }\n\n try {\n const tokens = Lexer.lex(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parse(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n changeDefaults(marked.defaults);\n return marked;\n};\n\nmarked.getDefaults = getDefaults;\n\nmarked.defaults = defaults;\n\n/**\n * Use Extension\n */\n\nmarked.use = function(...args) {\n const opts = merge({}, ...args);\n const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };\n let hasExtensions;\n\n args.forEach((pack) => {\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n hasExtensions = true;\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if (ext.renderer) { // Renderer extensions\n const prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function(...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n } else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if (ext.tokenizer) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n if (extensions[ext.level]) {\n extensions[ext.level].unshift(ext.tokenizer);\n } else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n } else {\n extensions.startBlock = [ext.start];\n }\n } else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n } else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if (ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n }\n\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = marked.defaults.renderer || new Renderer();\n for (const prop in pack.renderer) {\n const prevRenderer = renderer[prop];\n // Replace renderer with func to run extension, but fall back if false\n renderer[prop] = (...args) => {\n let ret = pack.renderer[prop].apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret;\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = marked.defaults.tokenizer || new Tokenizer();\n for (const prop in pack.tokenizer) {\n const prevTokenizer = tokenizer[prop];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[prop] = (...args) => {\n let ret = pack.tokenizer[prop].apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = marked.defaults.walkTokens;\n opts.walkTokens = function(token) {\n pack.walkTokens.call(this, token);\n if (walkTokens) {\n walkTokens.call(this, token);\n }\n };\n }\n\n if (hasExtensions) {\n opts.extensions = extensions;\n }\n\n marked.setOptions(opts);\n });\n};\n\n/**\n * Run callback for every token\n */\n\nmarked.walkTokens = function(tokens, callback) {\n for (const token of tokens) {\n callback.call(marked, token);\n switch (token.type) {\n case 'table': {\n for (const cell of token.header) {\n marked.walkTokens(cell.tokens, callback);\n }\n for (const row of token.rows) {\n for (const cell of row) {\n marked.walkTokens(cell.tokens, callback);\n }\n }\n break;\n }\n case 'list': {\n marked.walkTokens(token.items, callback);\n break;\n }\n default: {\n if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions\n marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {\n marked.walkTokens(token[childTokens], callback);\n });\n } else if (token.tokens) {\n marked.walkTokens(token.tokens, callback);\n }\n }\n }\n }\n};\n\n/**\n * Parse Inline\n */\nmarked.parseInline = function(src, opt) {\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n throw new Error('marked.parseInline(): input parameter is undefined or null');\n }\n if (typeof src !== 'string') {\n throw new Error('marked.parseInline(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected');\n }\n\n opt = merge({}, marked.defaults, opt || {});\n checkSanitizeDeprecation(opt);\n\n try {\n const tokens = Lexer.lexInline(src, opt);\n if (opt.walkTokens) {\n marked.walkTokens(tokens, opt.walkTokens);\n }\n return Parser.parseInline(tokens, opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (opt.silent) {\n return '

    An error occurred:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n};\n\n/**\n * Expose\n */\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\nmarked.Renderer = Renderer;\nmarked.TextRenderer = TextRenderer;\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\nmarked.Tokenizer = Tokenizer;\nmarked.Slugger = Slugger;\nmarked.parse = marked;\n\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = Parser.parse;\nconst lexer = Lexer.lex;\n\nexport { Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n","/**\n * @license Angular v13.0.2\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, ɵɵinject, Inject, Optional, EventEmitter, ɵfindLocaleData, ɵLocaleDataIndex, ɵgetLocaleCurrencyCode, ɵgetLocalePluralCase, LOCALE_ID, ɵregisterLocaleData, ɵisListLikeIterable, ɵstringify, Directive, Input, NgModuleRef, ComponentFactoryResolver, Host, ɵRuntimeError, Attribute, ɵisPromise, ɵisSubscribable, Pipe, DEFAULT_CURRENCY_CODE, NgModule, Version, ɵɵdefineInjectable } from '@angular/core';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nlet _DOM = null;\nfunction getDOM() {\n return _DOM;\n}\nfunction setDOM(adapter) {\n _DOM = adapter;\n}\nfunction setRootDomAdapter(adapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nclass DomAdapter {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A DI Token representing the main rendering context. In a browser this is the DOM Document.\n *\n * Note: Document might not be available in the Application Context when Application and Rendering\n * Contexts are not the same (e.g. when running the application in a Web Worker).\n *\n * @publicApi\n */\nconst DOCUMENT = new InjectionToken('DocumentToken');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n *\n * `PlatformLocation` encapsulates all calls to DOM APIs, which allows the Router to be\n * platform-agnostic.\n * This means that we can have different implementation of `PlatformLocation` for the different\n * platforms that Angular supports. For example, `@angular/platform-browser` provides an\n * implementation specific to the browser environment, while `@angular/platform-server` provides\n * one suitable for use with server-side rendering.\n *\n * The `PlatformLocation` class is used directly by all implementations of {@link LocationStrategy}\n * when they need to interact with the DOM APIs like pushState, popState, etc.\n *\n * {@link LocationStrategy} in turn is used by the {@link Location} service which is used directly\n * by the {@link Router} in order to navigate between routes. Since all interactions between {@link\n * Router} /\n * {@link Location} / {@link LocationStrategy} and DOM APIs flow through the `PlatformLocation`\n * class, they are all platform-agnostic.\n *\n * @publicApi\n */\nclass PlatformLocation {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PlatformLocation, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PlatformLocation, providedIn: 'platform', useFactory: useBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: useBrowserPlatformLocation\n }]\n }] });\nfunction useBrowserPlatformLocation() {\n return ɵɵinject(BrowserPlatformLocation);\n}\n/**\n * @description\n * Indicates when a location is initialized.\n *\n * @publicApi\n */\nconst LOCATION_INITIALIZED = new InjectionToken('Location Initialized');\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\nclass BrowserPlatformLocation extends PlatformLocation {\n constructor(_doc) {\n super();\n this._doc = _doc;\n this._init();\n }\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n this.location = window.location;\n this._history = window.history;\n }\n getBaseHrefFromDOM() {\n return getDOM().getBaseHref(this._doc);\n }\n onPopState(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('popstate', fn, false);\n return () => window.removeEventListener('popstate', fn);\n }\n onHashChange(fn) {\n const window = getDOM().getGlobalEventTarget(this._doc, 'window');\n window.addEventListener('hashchange', fn, false);\n return () => window.removeEventListener('hashchange', fn);\n }\n get href() {\n return this.location.href;\n }\n get protocol() {\n return this.location.protocol;\n }\n get hostname() {\n return this.location.hostname;\n }\n get port() {\n return this.location.port;\n }\n get pathname() {\n return this.location.pathname;\n }\n get search() {\n return this.location.search;\n }\n get hash() {\n return this.location.hash;\n }\n set pathname(newPath) {\n this.location.pathname = newPath;\n }\n pushState(state, title, url) {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n replaceState(state, title, url) {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n }\n else {\n this.location.hash = url;\n }\n }\n forward() {\n this._history.forward();\n }\n back() {\n this._history.back();\n }\n historyGo(relativePosition = 0) {\n this._history.go(relativePosition);\n }\n getState() {\n return this._history.state;\n }\n}\nBrowserPlatformLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: BrowserPlatformLocation, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nBrowserPlatformLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: BrowserPlatformLocation, providedIn: 'platform', useFactory: createBrowserPlatformLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: BrowserPlatformLocation, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'platform',\n // See #23917\n useFactory: createBrowserPlatformLocation,\n }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\nfunction supportsState() {\n return !!window.history.pushState;\n}\nfunction createBrowserPlatformLocation() {\n return new BrowserPlatformLocation(ɵɵinject(DOCUMENT));\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nfunction joinWithSlash(start, end) {\n if (start.length == 0) {\n return end;\n }\n if (end.length == 0) {\n return start;\n }\n let slashes = 0;\n if (start.endsWith('/')) {\n slashes++;\n }\n if (end.startsWith('/')) {\n slashes++;\n }\n if (slashes == 2) {\n return start + end.substring(1);\n }\n if (slashes == 1) {\n return start + end;\n }\n return start + '/' + end;\n}\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nfunction stripTrailingSlash(url) {\n const match = url.match(/#|\\?|$/);\n const pathEndIdx = match && match.index || url.length;\n const droppedSlashIdx = pathEndIdx - (url[pathEndIdx - 1] === '/' ? 1 : 0);\n return url.slice(0, droppedSlashIdx) + url.slice(pathEndIdx);\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nfunction normalizeQueryParams(params) {\n return params && params[0] !== '?' ? '?' + params : params;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Enables the `Location` service to read route state from the browser's URL.\n * Angular provides two strategies:\n * `HashLocationStrategy` and `PathLocationStrategy`.\n *\n * Applications should use the `Router` or `Location` services to\n * interact with application route state.\n *\n * For instance, `HashLocationStrategy` produces URLs like\n * http://example.com#/foo,\n * and `PathLocationStrategy` produces\n * http://example.com/foo as an equivalent URL.\n *\n * See these two classes for more.\n *\n * @publicApi\n */\nclass LocationStrategy {\n historyGo(relativePosition) {\n throw new Error('Not implemented');\n }\n}\nLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LocationStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LocationStrategy, providedIn: 'root', useFactory: provideLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LocationStrategy, decorators: [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: provideLocationStrategy }]\n }] });\nfunction provideLocationStrategy(platformLocation) {\n // See #23917\n const location = ɵɵinject(DOCUMENT).location;\n return new PathLocationStrategy(ɵɵinject(PlatformLocation), location && location.origin || '');\n}\n/**\n * A predefined [DI token](guide/glossary#di-token) for the base href\n * to be used with the `PathLocationStrategy`.\n * The base href is the URL prefix that should be preserved when generating\n * and recognizing URLs.\n *\n * @usageNotes\n *\n * The following example shows how to use this token to configure the root app injector\n * with a base href value, so that the DI framework can supply the dependency anywhere in the app.\n *\n * ```typescript\n * import {Component, NgModule} from '@angular/core';\n * import {APP_BASE_HREF} from '@angular/common';\n *\n * @NgModule({\n * providers: [{provide: APP_BASE_HREF, useValue: '/my/app'}]\n * })\n * class AppModule {}\n * ```\n *\n * @publicApi\n */\nconst APP_BASE_HREF = new InjectionToken('appBaseHref');\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [path](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax) of the\n * browser's URL.\n *\n * If you're using `PathLocationStrategy`, you must provide a {@link APP_BASE_HREF}\n * or add a `` element to the document.\n *\n * For instance, if you provide an `APP_BASE_HREF` of `'/my/app/'` and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`. To ensure all relative URIs resolve correctly,\n * the `` and/or `APP_BASE_HREF` should end with a `/`.\n *\n * Similarly, if you add `` to the document and call\n * `location.go('/foo')`, the browser's URL will become\n * `example.com/my/app/foo`.\n *\n * Note that when using `PathLocationStrategy`, neither the query nor\n * the fragment in the `` will be preserved, as outlined\n * by the [RFC](https://tools.ietf.org/html/rfc3986#section-5.2.2).\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/path_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass PathLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, href) {\n super();\n this._platformLocation = _platformLocation;\n this._removeListenerFns = [];\n if (href == null) {\n href = this._platformLocation.getBaseHrefFromDOM();\n }\n if (href == null) {\n throw new Error(`No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.`);\n }\n this._baseHref = href;\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n prepareExternalUrl(internal) {\n return joinWithSlash(this._baseHref, internal);\n }\n path(includeHash = false) {\n const pathname = this._platformLocation.pathname + normalizeQueryParams(this._platformLocation.search);\n const hash = this._platformLocation.hash;\n return hash && includeHash ? `${pathname}${hash}` : pathname;\n }\n pushState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.pushState(state, title, externalUrl);\n }\n replaceState(state, title, url, queryParams) {\n const externalUrl = this.prepareExternalUrl(url + normalizeQueryParams(queryParams));\n this._platformLocation.replaceState(state, title, externalUrl);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nPathLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PathLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nPathLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PathLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PathLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n * A {@link LocationStrategy} used to configure the {@link Location} service to\n * represent its state in the\n * [hash fragment](https://en.wikipedia.org/wiki/Uniform_Resource_Locator#Syntax)\n * of the browser's URL.\n *\n * For instance, if you call `location.go('/foo')`, the browser's URL will become\n * `example.com#/foo`.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/location/ts/hash_location_component.ts region='LocationComponent'}\n *\n * @publicApi\n */\nclass HashLocationStrategy extends LocationStrategy {\n constructor(_platformLocation, _baseHref) {\n super();\n this._platformLocation = _platformLocation;\n this._baseHref = '';\n this._removeListenerFns = [];\n if (_baseHref != null) {\n this._baseHref = _baseHref;\n }\n }\n ngOnDestroy() {\n while (this._removeListenerFns.length) {\n this._removeListenerFns.pop()();\n }\n }\n onPopState(fn) {\n this._removeListenerFns.push(this._platformLocation.onPopState(fn), this._platformLocation.onHashChange(fn));\n }\n getBaseHref() {\n return this._baseHref;\n }\n path(includeHash = false) {\n // the hash value is always prefixed with a `#`\n // and if it is empty then it will stay empty\n let path = this._platformLocation.hash;\n if (path == null)\n path = '#';\n return path.length > 0 ? path.substring(1) : path;\n }\n prepareExternalUrl(internal) {\n const url = joinWithSlash(this._baseHref, internal);\n return url.length > 0 ? ('#' + url) : url;\n }\n pushState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.pushState(state, title, url);\n }\n replaceState(state, title, path, queryParams) {\n let url = this.prepareExternalUrl(path + normalizeQueryParams(queryParams));\n if (url.length == 0) {\n url = this._platformLocation.pathname;\n }\n this._platformLocation.replaceState(state, title, url);\n }\n forward() {\n this._platformLocation.forward();\n }\n back() {\n this._platformLocation.back();\n }\n historyGo(relativePosition = 0) {\n this._platformLocation.historyGo?.(relativePosition);\n }\n}\nHashLocationStrategy.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HashLocationStrategy, deps: [{ token: PlatformLocation }, { token: APP_BASE_HREF, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });\nHashLocationStrategy.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HashLocationStrategy });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HashLocationStrategy, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: PlatformLocation }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [APP_BASE_HREF]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @description\n *\n * A service that applications can use to interact with a browser's URL.\n *\n * Depending on the `LocationStrategy` used, `Location` persists\n * to the URL's path or the URL's hash segment.\n *\n * @usageNotes\n *\n * It's better to use the `Router.navigate()` service to trigger route changes. Use\n * `Location` only if you need to interact with or create normalized URLs outside of\n * routing.\n *\n * `Location` is responsible for normalizing the URL against the application's base href.\n * A normalized URL is absolute from the URL host, includes the application's base href, and has no\n * trailing slash:\n * - `/my/app/user/123` is normalized\n * - `my/app/user/123` **is not** normalized\n * - `/my/app/user/123/` **is not** normalized\n *\n * ### Example\n *\n * \n *\n * @publicApi\n */\nclass Location {\n constructor(platformStrategy, platformLocation) {\n /** @internal */\n this._subject = new EventEmitter();\n /** @internal */\n this._urlChangeListeners = [];\n this._platformStrategy = platformStrategy;\n const browserBaseHref = this._platformStrategy.getBaseHref();\n this._platformLocation = platformLocation;\n this._baseHref = stripTrailingSlash(_stripIndexHtml(browserBaseHref));\n this._platformStrategy.onPopState((ev) => {\n this._subject.emit({\n 'url': this.path(true),\n 'pop': true,\n 'state': ev.state,\n 'type': ev.type,\n });\n });\n }\n /**\n * Normalizes the URL path for this location.\n *\n * @param includeHash True to include an anchor fragment in the path.\n *\n * @returns The normalized URL path.\n */\n // TODO: vsavkin. Remove the boolean flag and always include hash once the deprecated router is\n // removed.\n path(includeHash = false) {\n return this.normalize(this._platformStrategy.path(includeHash));\n }\n /**\n * Reports the current state of the location history.\n * @returns The current value of the `history.state` object.\n */\n getState() {\n return this._platformLocation.getState();\n }\n /**\n * Normalizes the given path and compares to the current normalized path.\n *\n * @param path The given URL path.\n * @param query Query parameters.\n *\n * @returns True if the given URL path is equal to the current normalized path, false\n * otherwise.\n */\n isCurrentPathEqualTo(path, query = '') {\n return this.path() == this.normalize(path + normalizeQueryParams(query));\n }\n /**\n * Normalizes a URL path by stripping any trailing slashes.\n *\n * @param url String representing a URL.\n *\n * @returns The normalized URL string.\n */\n normalize(url) {\n return Location.stripTrailingSlash(_stripBaseHref(this._baseHref, _stripIndexHtml(url)));\n }\n /**\n * Normalizes an external URL path.\n * If the given URL doesn't begin with a leading slash (`'/'`), adds one\n * before normalizing. Adds a hash if `HashLocationStrategy` is\n * in use, or the `APP_BASE_HREF` if the `PathLocationStrategy` is in use.\n *\n * @param url String representing a URL.\n *\n * @returns A normalized platform-specific URL.\n */\n prepareExternalUrl(url) {\n if (url && url[0] !== '/') {\n url = '/' + url;\n }\n return this._platformStrategy.prepareExternalUrl(url);\n }\n // TODO: rename this method to pushState\n /**\n * Changes the browser's URL to a normalized version of a given URL, and pushes a\n * new item onto the platform's history.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n *\n */\n go(path, query = '', state = null) {\n this._platformStrategy.pushState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Changes the browser's URL to a normalized version of the given URL, and replaces\n * the top item on the platform's history stack.\n *\n * @param path URL path to normalize.\n * @param query Query parameters.\n * @param state Location history state.\n */\n replaceState(path, query = '', state = null) {\n this._platformStrategy.replaceState(state, '', path, query);\n this._notifyUrlChangeListeners(this.prepareExternalUrl(path + normalizeQueryParams(query)), state);\n }\n /**\n * Navigates forward in the platform's history.\n */\n forward() {\n this._platformStrategy.forward();\n }\n /**\n * Navigates back in the platform's history.\n */\n back() {\n this._platformStrategy.back();\n }\n /**\n * Navigate to a specific page from session history, identified by its relative position to the\n * current page.\n *\n * @param relativePosition Position of the target page in the history relative to the current\n * page.\n * A negative value moves backwards, a positive value moves forwards, e.g. `location.historyGo(2)`\n * moves forward two pages and `location.historyGo(-2)` moves back two pages. When we try to go\n * beyond what's stored in the history session, we stay in the current page. Same behaviour occurs\n * when `relativePosition` equals 0.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/History_API#Moving_to_a_specific_point_in_history\n */\n historyGo(relativePosition = 0) {\n this._platformStrategy.historyGo?.(relativePosition);\n }\n /**\n * Registers a URL change listener. Use to catch updates performed by the Angular\n * framework that are not detectible through \"popstate\" or \"hashchange\" events.\n *\n * @param fn The change handler function, which take a URL and a location history state.\n */\n onUrlChange(fn) {\n this._urlChangeListeners.push(fn);\n if (!this._urlChangeSubscription) {\n this._urlChangeSubscription = this.subscribe(v => {\n this._notifyUrlChangeListeners(v.url, v.state);\n });\n }\n }\n /** @internal */\n _notifyUrlChangeListeners(url = '', state) {\n this._urlChangeListeners.forEach(fn => fn(url, state));\n }\n /**\n * Subscribes to the platform's `popState` events.\n *\n * Note: `Location.go()` does not trigger the `popState` event in the browser. Use\n * `Location.onUrlChange()` to subscribe to URL changes instead.\n *\n * @param value Event that is triggered when the state history changes.\n * @param exception The exception to throw.\n *\n * @see [onpopstate](https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate)\n *\n * @returns Subscribed events.\n */\n subscribe(onNext, onThrow, onReturn) {\n return this._subject.subscribe({ next: onNext, error: onThrow, complete: onReturn });\n }\n}\n/**\n * Normalizes URL parameters by prepending with `?` if needed.\n *\n * @param params String of URL parameters.\n *\n * @returns The normalized URL parameters string.\n */\nLocation.normalizeQueryParams = normalizeQueryParams;\n/**\n * Joins two parts of a URL with a slash if needed.\n *\n * @param start URL string\n * @param end URL string\n *\n *\n * @returns The joined URL string.\n */\nLocation.joinWithSlash = joinWithSlash;\n/**\n * Removes a trailing slash from a URL string if needed.\n * Looks for the first occurrence of either `#`, `?`, or the end of the\n * line as `/` characters and removes the trailing slash if one exists.\n *\n * @param url URL string.\n *\n * @returns The URL string, modified if needed.\n */\nLocation.stripTrailingSlash = stripTrailingSlash;\nLocation.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: Location, deps: [{ token: LocationStrategy }, { token: PlatformLocation }], target: i0.ɵɵFactoryTarget.Injectable });\nLocation.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: Location, providedIn: 'root', useFactory: createLocation });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: Location, decorators: [{\n type: Injectable,\n args: [{\n providedIn: 'root',\n // See #23917\n useFactory: createLocation,\n }]\n }], ctorParameters: function () { return [{ type: LocationStrategy }, { type: PlatformLocation }]; } });\nfunction createLocation() {\n return new Location(ɵɵinject(LocationStrategy), ɵɵinject(PlatformLocation));\n}\nfunction _stripBaseHref(baseHref, url) {\n return baseHref && url.startsWith(baseHref) ? url.substring(baseHref.length) : url;\n}\nfunction _stripIndexHtml(url) {\n return url.replace(/\\/index.html$/, '');\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/** @internal */\nconst CURRENCIES_EN = { \"ADP\": [undefined, undefined, 0], \"AFN\": [undefined, \"؋\", 0], \"ALL\": [undefined, undefined, 0], \"AMD\": [undefined, \"֏\", 2], \"AOA\": [undefined, \"Kz\"], \"ARS\": [undefined, \"$\"], \"AUD\": [\"A$\", \"$\"], \"AZN\": [undefined, \"₼\"], \"BAM\": [undefined, \"KM\"], \"BBD\": [undefined, \"$\"], \"BDT\": [undefined, \"৳\"], \"BHD\": [undefined, undefined, 3], \"BIF\": [undefined, undefined, 0], \"BMD\": [undefined, \"$\"], \"BND\": [undefined, \"$\"], \"BOB\": [undefined, \"Bs\"], \"BRL\": [\"R$\"], \"BSD\": [undefined, \"$\"], \"BWP\": [undefined, \"P\"], \"BYN\": [undefined, \"р.\", 2], \"BYR\": [undefined, undefined, 0], \"BZD\": [undefined, \"$\"], \"CAD\": [\"CA$\", \"$\", 2], \"CHF\": [undefined, undefined, 2], \"CLF\": [undefined, undefined, 4], \"CLP\": [undefined, \"$\", 0], \"CNY\": [\"CN¥\", \"¥\"], \"COP\": [undefined, \"$\", 2], \"CRC\": [undefined, \"₡\", 2], \"CUC\": [undefined, \"$\"], \"CUP\": [undefined, \"$\"], \"CZK\": [undefined, \"Kč\", 2], \"DJF\": [undefined, undefined, 0], \"DKK\": [undefined, \"kr\", 2], \"DOP\": [undefined, \"$\"], \"EGP\": [undefined, \"E£\"], \"ESP\": [undefined, \"₧\", 0], \"EUR\": [\"€\"], \"FJD\": [undefined, \"$\"], \"FKP\": [undefined, \"£\"], \"GBP\": [\"£\"], \"GEL\": [undefined, \"₾\"], \"GHS\": [undefined, \"GH₵\"], \"GIP\": [undefined, \"£\"], \"GNF\": [undefined, \"FG\", 0], \"GTQ\": [undefined, \"Q\"], \"GYD\": [undefined, \"$\", 2], \"HKD\": [\"HK$\", \"$\"], \"HNL\": [undefined, \"L\"], \"HRK\": [undefined, \"kn\"], \"HUF\": [undefined, \"Ft\", 2], \"IDR\": [undefined, \"Rp\", 2], \"ILS\": [\"₪\"], \"INR\": [\"₹\"], \"IQD\": [undefined, undefined, 0], \"IRR\": [undefined, undefined, 0], \"ISK\": [undefined, \"kr\", 0], \"ITL\": [undefined, undefined, 0], \"JMD\": [undefined, \"$\"], \"JOD\": [undefined, undefined, 3], \"JPY\": [\"¥\", undefined, 0], \"KHR\": [undefined, \"៛\"], \"KMF\": [undefined, \"CF\", 0], \"KPW\": [undefined, \"₩\", 0], \"KRW\": [\"₩\", undefined, 0], \"KWD\": [undefined, undefined, 3], \"KYD\": [undefined, \"$\"], \"KZT\": [undefined, \"₸\"], \"LAK\": [undefined, \"₭\", 0], \"LBP\": [undefined, \"L£\", 0], \"LKR\": [undefined, \"Rs\"], \"LRD\": [undefined, \"$\"], \"LTL\": [undefined, \"Lt\"], \"LUF\": [undefined, undefined, 0], \"LVL\": [undefined, \"Ls\"], \"LYD\": [undefined, undefined, 3], \"MGA\": [undefined, \"Ar\", 0], \"MGF\": [undefined, undefined, 0], \"MMK\": [undefined, \"K\", 0], \"MNT\": [undefined, \"₮\", 2], \"MRO\": [undefined, undefined, 0], \"MUR\": [undefined, \"Rs\", 2], \"MXN\": [\"MX$\", \"$\"], \"MYR\": [undefined, \"RM\"], \"NAD\": [undefined, \"$\"], \"NGN\": [undefined, \"₦\"], \"NIO\": [undefined, \"C$\"], \"NOK\": [undefined, \"kr\", 2], \"NPR\": [undefined, \"Rs\"], \"NZD\": [\"NZ$\", \"$\"], \"OMR\": [undefined, undefined, 3], \"PHP\": [\"₱\"], \"PKR\": [undefined, \"Rs\", 2], \"PLN\": [undefined, \"zł\"], \"PYG\": [undefined, \"₲\", 0], \"RON\": [undefined, \"lei\"], \"RSD\": [undefined, undefined, 0], \"RUB\": [undefined, \"₽\"], \"RUR\": [undefined, \"р.\"], \"RWF\": [undefined, \"RF\", 0], \"SBD\": [undefined, \"$\"], \"SEK\": [undefined, \"kr\", 2], \"SGD\": [undefined, \"$\"], \"SHP\": [undefined, \"£\"], \"SLL\": [undefined, undefined, 0], \"SOS\": [undefined, undefined, 0], \"SRD\": [undefined, \"$\"], \"SSP\": [undefined, \"£\"], \"STD\": [undefined, undefined, 0], \"STN\": [undefined, \"Db\"], \"SYP\": [undefined, \"£\", 0], \"THB\": [undefined, \"฿\"], \"TMM\": [undefined, undefined, 0], \"TND\": [undefined, undefined, 3], \"TOP\": [undefined, \"T$\"], \"TRL\": [undefined, undefined, 0], \"TRY\": [undefined, \"₺\"], \"TTD\": [undefined, \"$\"], \"TWD\": [\"NT$\", \"$\", 2], \"TZS\": [undefined, undefined, 2], \"UAH\": [undefined, \"₴\"], \"UGX\": [undefined, undefined, 0], \"USD\": [\"$\"], \"UYI\": [undefined, undefined, 0], \"UYU\": [undefined, \"$\"], \"UYW\": [undefined, undefined, 4], \"UZS\": [undefined, undefined, 2], \"VEF\": [undefined, \"Bs\", 2], \"VND\": [\"₫\", undefined, 0], \"VUV\": [undefined, undefined, 0], \"XAF\": [\"FCFA\", undefined, 0], \"XCD\": [\"EC$\", \"$\"], \"XOF\": [\"F CFA\", undefined, 0], \"XPF\": [\"CFPF\", undefined, 0], \"XXX\": [\"¤\"], \"YER\": [undefined, undefined, 0], \"ZAR\": [undefined, \"R\"], \"ZMK\": [undefined, undefined, 0], \"ZMW\": [undefined, \"ZK\"], \"ZWD\": [undefined, undefined, 0] };\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Format styles that can be used to represent numbers.\n * @see `getLocaleNumberFormat()`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberFormatStyle;\n(function (NumberFormatStyle) {\n NumberFormatStyle[NumberFormatStyle[\"Decimal\"] = 0] = \"Decimal\";\n NumberFormatStyle[NumberFormatStyle[\"Percent\"] = 1] = \"Percent\";\n NumberFormatStyle[NumberFormatStyle[\"Currency\"] = 2] = \"Currency\";\n NumberFormatStyle[NumberFormatStyle[\"Scientific\"] = 3] = \"Scientific\";\n})(NumberFormatStyle || (NumberFormatStyle = {}));\n/**\n * Plurality cases used for translating plurals to different languages.\n *\n * @see `NgPlural`\n * @see `NgPluralCase`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar Plural;\n(function (Plural) {\n Plural[Plural[\"Zero\"] = 0] = \"Zero\";\n Plural[Plural[\"One\"] = 1] = \"One\";\n Plural[Plural[\"Two\"] = 2] = \"Two\";\n Plural[Plural[\"Few\"] = 3] = \"Few\";\n Plural[Plural[\"Many\"] = 4] = \"Many\";\n Plural[Plural[\"Other\"] = 5] = \"Other\";\n})(Plural || (Plural = {}));\n/**\n * Context-dependant translation forms for strings.\n * Typically the standalone version is for the nominative form of the word,\n * and the format version is used for the genitive case.\n * @see [CLDR website](http://cldr.unicode.org/translation/date-time-1/date-time#TOC-Standalone-vs.-Format-Styles)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar FormStyle;\n(function (FormStyle) {\n FormStyle[FormStyle[\"Format\"] = 0] = \"Format\";\n FormStyle[FormStyle[\"Standalone\"] = 1] = \"Standalone\";\n})(FormStyle || (FormStyle = {}));\n/**\n * String widths available for translations.\n * The specific character widths are locale-specific.\n * Examples are given for the word \"Sunday\" in English.\n *\n * @publicApi\n */\nvar TranslationWidth;\n(function (TranslationWidth) {\n /** 1 character for `en-US`. For example: 'S' */\n TranslationWidth[TranslationWidth[\"Narrow\"] = 0] = \"Narrow\";\n /** 3 characters for `en-US`. For example: 'Sun' */\n TranslationWidth[TranslationWidth[\"Abbreviated\"] = 1] = \"Abbreviated\";\n /** Full length for `en-US`. For example: \"Sunday\" */\n TranslationWidth[TranslationWidth[\"Wide\"] = 2] = \"Wide\";\n /** 2 characters for `en-US`, For example: \"Su\" */\n TranslationWidth[TranslationWidth[\"Short\"] = 3] = \"Short\";\n})(TranslationWidth || (TranslationWidth = {}));\n/**\n * String widths available for date-time formats.\n * The specific character widths are locale-specific.\n * Examples are given for `en-US`.\n *\n * @see `getLocaleDateFormat()`\n * @see `getLocaleTimeFormat()`\n * @see `getLocaleDateTimeFormat()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n */\nvar FormatWidth;\n(function (FormatWidth) {\n /**\n * For `en-US`, 'M/d/yy, h:mm a'`\n * (Example: `6/15/15, 9:03 AM`)\n */\n FormatWidth[FormatWidth[\"Short\"] = 0] = \"Short\";\n /**\n * For `en-US`, `'MMM d, y, h:mm:ss a'`\n * (Example: `Jun 15, 2015, 9:03:01 AM`)\n */\n FormatWidth[FormatWidth[\"Medium\"] = 1] = \"Medium\";\n /**\n * For `en-US`, `'MMMM d, y, h:mm:ss a z'`\n * (Example: `June 15, 2015 at 9:03:01 AM GMT+1`)\n */\n FormatWidth[FormatWidth[\"Long\"] = 2] = \"Long\";\n /**\n * For `en-US`, `'EEEE, MMMM d, y, h:mm:ss a zzzz'`\n * (Example: `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00`)\n */\n FormatWidth[FormatWidth[\"Full\"] = 3] = \"Full\";\n})(FormatWidth || (FormatWidth = {}));\n/**\n * Symbols that can be used to replace placeholders in number patterns.\n * Examples are based on `en-US` values.\n *\n * @see `getLocaleNumberSymbol()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nvar NumberSymbol;\n(function (NumberSymbol) {\n /**\n * Decimal separator.\n * For `en-US`, the dot character.\n * Example: 2,345`.`67\n */\n NumberSymbol[NumberSymbol[\"Decimal\"] = 0] = \"Decimal\";\n /**\n * Grouping separator, typically for thousands.\n * For `en-US`, the comma character.\n * Example: 2`,`345.67\n */\n NumberSymbol[NumberSymbol[\"Group\"] = 1] = \"Group\";\n /**\n * List-item separator.\n * Example: \"one, two, and three\"\n */\n NumberSymbol[NumberSymbol[\"List\"] = 2] = \"List\";\n /**\n * Sign for percentage (out of 100).\n * Example: 23.4%\n */\n NumberSymbol[NumberSymbol[\"PercentSign\"] = 3] = \"PercentSign\";\n /**\n * Sign for positive numbers.\n * Example: +23\n */\n NumberSymbol[NumberSymbol[\"PlusSign\"] = 4] = \"PlusSign\";\n /**\n * Sign for negative numbers.\n * Example: -23\n */\n NumberSymbol[NumberSymbol[\"MinusSign\"] = 5] = \"MinusSign\";\n /**\n * Computer notation for exponential value (n times a power of 10).\n * Example: 1.2E3\n */\n NumberSymbol[NumberSymbol[\"Exponential\"] = 6] = \"Exponential\";\n /**\n * Human-readable format of exponential.\n * Example: 1.2x103\n */\n NumberSymbol[NumberSymbol[\"SuperscriptingExponent\"] = 7] = \"SuperscriptingExponent\";\n /**\n * Sign for permille (out of 1000).\n * Example: 23.4‰\n */\n NumberSymbol[NumberSymbol[\"PerMille\"] = 8] = \"PerMille\";\n /**\n * Infinity, can be used with plus and minus.\n * Example: ∞, +∞, -∞\n */\n NumberSymbol[NumberSymbol[\"Infinity\"] = 9] = \"Infinity\";\n /**\n * Not a number.\n * Example: NaN\n */\n NumberSymbol[NumberSymbol[\"NaN\"] = 10] = \"NaN\";\n /**\n * Symbol used between time units.\n * Example: 10:52\n */\n NumberSymbol[NumberSymbol[\"TimeSeparator\"] = 11] = \"TimeSeparator\";\n /**\n * Decimal separator for currency values (fallback to `Decimal`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyDecimal\"] = 12] = \"CurrencyDecimal\";\n /**\n * Group separator for currency values (fallback to `Group`).\n * Example: $2,345.67\n */\n NumberSymbol[NumberSymbol[\"CurrencyGroup\"] = 13] = \"CurrencyGroup\";\n})(NumberSymbol || (NumberSymbol = {}));\n/**\n * The value for each day of the week, based on the `en-US` locale\n *\n * @publicApi\n */\nvar WeekDay;\n(function (WeekDay) {\n WeekDay[WeekDay[\"Sunday\"] = 0] = \"Sunday\";\n WeekDay[WeekDay[\"Monday\"] = 1] = \"Monday\";\n WeekDay[WeekDay[\"Tuesday\"] = 2] = \"Tuesday\";\n WeekDay[WeekDay[\"Wednesday\"] = 3] = \"Wednesday\";\n WeekDay[WeekDay[\"Thursday\"] = 4] = \"Thursday\";\n WeekDay[WeekDay[\"Friday\"] = 5] = \"Friday\";\n WeekDay[WeekDay[\"Saturday\"] = 6] = \"Saturday\";\n})(WeekDay || (WeekDay = {}));\n/**\n * Retrieves the locale ID from the currently loaded locale.\n * The loaded locale could be, for example, a global one rather than a regional one.\n * @param locale A locale code, such as `fr-FR`.\n * @returns The locale code. For example, `fr`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleId(locale) {\n return ɵfindLocaleData(locale)[ɵLocaleDataIndex.LocaleId];\n}\n/**\n * Retrieves day period strings for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized period strings. For example, `[AM, PM]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const amPmData = [\n data[ɵLocaleDataIndex.DayPeriodsFormat], data[ɵLocaleDataIndex.DayPeriodsStandalone]\n ];\n const amPm = getLastDefinedValue(amPmData, formStyle);\n return getLastDefinedValue(amPm, width);\n}\n/**\n * Retrieves days of the week for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example,`[Sunday, Monday, ... Saturday]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDayNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const daysData = [data[ɵLocaleDataIndex.DaysFormat], data[ɵLocaleDataIndex.DaysStandalone]];\n const days = getLastDefinedValue(daysData, formStyle);\n return getLastDefinedValue(days, width);\n}\n/**\n * Retrieves months of the year for the given locale, using the Gregorian calendar.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns An array of localized name strings.\n * For example, `[January, February, ...]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleMonthNames(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n const monthsData = [data[ɵLocaleDataIndex.MonthsFormat], data[ɵLocaleDataIndex.MonthsStandalone]];\n const months = getLastDefinedValue(monthsData, formStyle);\n return getLastDefinedValue(months, width);\n}\n/**\n * Retrieves Gregorian-calendar eras for the given locale.\n * @param locale A locale code for the locale format rules to use.\n * @param width The required character width.\n\n * @returns An array of localized era strings.\n * For example, `[AD, BC]` for `en-US`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleEraNames(locale, width) {\n const data = ɵfindLocaleData(locale);\n const erasData = data[ɵLocaleDataIndex.Eras];\n return getLastDefinedValue(erasData, width);\n}\n/**\n * Retrieves the first day of the week for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns A day index number, using the 0-based week-day index for `en-US`\n * (Sunday = 0, Monday = 1, ...).\n * For example, for `fr-FR`, returns 1 to indicate that the first day is Monday.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleFirstDayOfWeek(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.FirstDayOfWeek];\n}\n/**\n * Range of week days that are considered the week-end for the given locale.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The range of day values, `[startDay, endDay]`.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleWeekEndRange(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.WeekendRange];\n}\n/**\n * Retrieves a localized date-value formating string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formating string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.DateFormat], width);\n}\n/**\n * Retrieves a localized time-value formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n\n * @publicApi\n */\nfunction getLocaleTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n return getLastDefinedValue(data[ɵLocaleDataIndex.TimeFormat], width);\n}\n/**\n * Retrieves a localized date-time formatting string.\n *\n * @param locale A locale code for the locale format rules to use.\n * @param width The format type.\n * @returns The localized formatting string.\n * @see `FormatWidth`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleDateTimeFormat(locale, width) {\n const data = ɵfindLocaleData(locale);\n const dateTimeFormatData = data[ɵLocaleDataIndex.DateTimeFormat];\n return getLastDefinedValue(dateTimeFormatData, width);\n}\n/**\n * Retrieves a localized number symbol that can be used to replace placeholders in number formats.\n * @param locale The locale code.\n * @param symbol The symbol to localize.\n * @returns The character for the localized symbol.\n * @see `NumberSymbol`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberSymbol(locale, symbol) {\n const data = ɵfindLocaleData(locale);\n const res = data[ɵLocaleDataIndex.NumberSymbols][symbol];\n if (typeof res === 'undefined') {\n if (symbol === NumberSymbol.CurrencyDecimal) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Decimal];\n }\n else if (symbol === NumberSymbol.CurrencyGroup) {\n return data[ɵLocaleDataIndex.NumberSymbols][NumberSymbol.Group];\n }\n }\n return res;\n}\n/**\n * Retrieves a number format for a given locale.\n *\n * Numbers are formatted using patterns, like `#,###.00`. For example, the pattern `#,###.00`\n * when used to format the number 12345.678 could result in \"12'345,678\". That would happen if the\n * grouping separator for your language is an apostrophe, and the decimal separator is a comma.\n *\n * Important: The characters `.` `,` `0` `#` (and others below) are special placeholders\n * that stand for the decimal separator, and so on, and are NOT real characters.\n * You must NOT \"translate\" the placeholders. For example, don't change `.` to `,` even though in\n * your language the decimal point is written with a comma. The symbols should be replaced by the\n * local equivalents, using the appropriate `NumberSymbol` for your language.\n *\n * Here are the special characters used in number patterns:\n *\n * | Symbol | Meaning |\n * |--------|---------|\n * | . | Replaced automatically by the character used for the decimal point. |\n * | , | Replaced by the \"grouping\" (thousands) separator. |\n * | 0 | Replaced by a digit (or zero if there aren't enough digits). |\n * | # | Replaced by a digit (or nothing if there aren't enough). |\n * | ¤ | Replaced by a currency symbol, such as $ or USD. |\n * | % | Marks a percent format. The % symbol may change position, but must be retained. |\n * | E | Marks a scientific format. The E symbol may change position, but must be retained. |\n * | ' | Special characters used as literal characters are quoted with ASCII single quotes. |\n *\n * @param locale A locale code for the locale format rules to use.\n * @param type The type of numeric value to be formatted (such as `Decimal` or `Currency`.)\n * @returns The localized format string.\n * @see `NumberFormatStyle`\n * @see [CLDR website](http://cldr.unicode.org/translation/number-patterns)\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleNumberFormat(locale, type) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.NumberFormats][type];\n}\n/**\n * Retrieves the symbol used to represent the currency for the main country\n * corresponding to a given locale. For example, '$' for `en-US`.\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The localized symbol character,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencySymbol(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencySymbol] || null;\n}\n/**\n * Retrieves the name of the currency for the main country corresponding\n * to a given locale. For example, 'US Dollar' for `en-US`.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency name,\n * or `null` if the main country cannot be determined.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleCurrencyName(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.CurrencyName] || null;\n}\n/**\n * Retrieves the default currency code for the given locale.\n *\n * The default is defined as the first currency which is still in use.\n *\n * @param locale The code of the locale whose currency code we want.\n * @returns The code of the default currency for the given locale.\n *\n * @publicApi\n */\nfunction getLocaleCurrencyCode(locale) {\n return ɵgetLocaleCurrencyCode(locale);\n}\n/**\n * Retrieves the currency values for a given locale.\n * @param locale A locale code for the locale format rules to use.\n * @returns The currency values.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleCurrencies(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Currencies];\n}\n/**\n * @alias core/ɵgetLocalePluralCase\n * @publicApi\n */\nconst getLocalePluralCase = ɵgetLocalePluralCase;\nfunction checkFullData(data) {\n if (!data[ɵLocaleDataIndex.ExtraData]) {\n throw new Error(`Missing extra locale data for the locale \"${data[ɵLocaleDataIndex\n .LocaleId]}\". Use \"registerLocaleData\" to load new data. See the \"I18n guide\" on angular.io to know more.`);\n }\n}\n/**\n * Retrieves locale-specific rules used to determine which day period to use\n * when more than one period is defined for a locale.\n *\n * There is a rule for each defined day period. The\n * first rule is applied to the first day period and so on.\n * Fall back to AM/PM when no rules are available.\n *\n * A rule can specify a period as time range, or as a single time value.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @returns The rules for the locale, a single time value or array of *from-time, to-time*,\n * or null if no periods are available.\n *\n * @see `getLocaleExtraDayPeriods()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriodRules(locale) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const rules = data[ɵLocaleDataIndex.ExtraData][2 /* ExtraDayPeriodsRules */] || [];\n return rules.map((rule) => {\n if (typeof rule === 'string') {\n return extractTime(rule);\n }\n return [extractTime(rule[0]), extractTime(rule[1])];\n });\n}\n/**\n * Retrieves locale-specific day periods, which indicate roughly how a day is broken up\n * in different languages.\n * For example, for `en-US`, periods are morning, noon, afternoon, evening, and midnight.\n *\n * This functionality is only available when you have loaded the full locale data.\n * See the [\"I18n guide\"](guide/i18n-common-format-data-locale).\n *\n * @param locale A locale code for the locale format rules to use.\n * @param formStyle The required grammatical form.\n * @param width The required character width.\n * @returns The translated day-period strings.\n * @see `getLocaleExtraDayPeriodRules()`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLocaleExtraDayPeriods(locale, formStyle, width) {\n const data = ɵfindLocaleData(locale);\n checkFullData(data);\n const dayPeriodsData = [\n data[ɵLocaleDataIndex.ExtraData][0 /* ExtraDayPeriodFormats */],\n data[ɵLocaleDataIndex.ExtraData][1 /* ExtraDayPeriodStandalone */]\n ];\n const dayPeriods = getLastDefinedValue(dayPeriodsData, formStyle) || [];\n return getLastDefinedValue(dayPeriods, width) || [];\n}\n/**\n * Retrieves the writing direction of a specified locale\n * @param locale A locale code for the locale format rules to use.\n * @publicApi\n * @returns 'rtl' or 'ltr'\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n */\nfunction getLocaleDirection(locale) {\n const data = ɵfindLocaleData(locale);\n return data[ɵLocaleDataIndex.Directionality];\n}\n/**\n * Retrieves the first value that is defined in an array, going backwards from an index position.\n *\n * To avoid repeating the same data (as when the \"format\" and \"standalone\" forms are the same)\n * add the first value to the locale data arrays, and add other values only if they are different.\n *\n * @param data The data array to retrieve from.\n * @param index A 0-based index into the array to start from.\n * @returns The value immediately before the given index position.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getLastDefinedValue(data, index) {\n for (let i = index; i > -1; i--) {\n if (typeof data[i] !== 'undefined') {\n return data[i];\n }\n }\n throw new Error('Locale data API: locale data undefined');\n}\n/**\n * Extracts the hours and minutes from a string like \"15:45\"\n */\nfunction extractTime(time) {\n const [h, m] = time.split(':');\n return { hours: +h, minutes: +m };\n}\n/**\n * Retrieves the currency symbol for a given currency code.\n *\n * For example, for the default `en-US` locale, the code `USD` can\n * be represented by the narrow symbol `$` or the wide symbol `US$`.\n *\n * @param code The currency code.\n * @param format The format, `wide` or `narrow`.\n * @param locale A locale code for the locale format rules to use.\n *\n * @returns The symbol, or the currency code if no symbol is available.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getCurrencySymbol(code, format, locale = 'en') {\n const currency = getLocaleCurrencies(locale)[code] || CURRENCIES_EN[code] || [];\n const symbolNarrow = currency[1 /* SymbolNarrow */];\n if (format === 'narrow' && typeof symbolNarrow === 'string') {\n return symbolNarrow;\n }\n return currency[0 /* Symbol */] || code;\n}\n// Most currencies have cents, that's why the default is 2\nconst DEFAULT_NB_OF_CURRENCY_DIGITS = 2;\n/**\n * Reports the number of decimal digits for a given currency.\n * The value depends upon the presence of cents in that particular currency.\n *\n * @param code The currency code.\n * @returns The number of decimal digits, typically 0 or 2.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction getNumberOfCurrencyDigits(code) {\n let digits;\n const currency = CURRENCIES_EN[code];\n if (currency) {\n digits = currency[2 /* NbOfDigits */];\n }\n return typeof digits === 'number' ? digits : DEFAULT_NB_OF_CURRENCY_DIGITS;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst ISO8601_DATE_REGEX = /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\n// 1 2 3 4 5 6 7 8 9 10 11\nconst NAMED_FORMATS = {};\nconst DATE_FORMATS_SPLIT = /((?:[^BEGHLMOSWYZabcdhmswyz']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|Y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|c{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\\s\\S]*)/;\nvar ZoneWidth;\n(function (ZoneWidth) {\n ZoneWidth[ZoneWidth[\"Short\"] = 0] = \"Short\";\n ZoneWidth[ZoneWidth[\"ShortGMT\"] = 1] = \"ShortGMT\";\n ZoneWidth[ZoneWidth[\"Long\"] = 2] = \"Long\";\n ZoneWidth[ZoneWidth[\"Extended\"] = 3] = \"Extended\";\n})(ZoneWidth || (ZoneWidth = {}));\nvar DateType;\n(function (DateType) {\n DateType[DateType[\"FullYear\"] = 0] = \"FullYear\";\n DateType[DateType[\"Month\"] = 1] = \"Month\";\n DateType[DateType[\"Date\"] = 2] = \"Date\";\n DateType[DateType[\"Hours\"] = 3] = \"Hours\";\n DateType[DateType[\"Minutes\"] = 4] = \"Minutes\";\n DateType[DateType[\"Seconds\"] = 5] = \"Seconds\";\n DateType[DateType[\"FractionalSeconds\"] = 6] = \"FractionalSeconds\";\n DateType[DateType[\"Day\"] = 7] = \"Day\";\n})(DateType || (DateType = {}));\nvar TranslationType;\n(function (TranslationType) {\n TranslationType[TranslationType[\"DayPeriods\"] = 0] = \"DayPeriods\";\n TranslationType[TranslationType[\"Days\"] = 1] = \"Days\";\n TranslationType[TranslationType[\"Months\"] = 2] = \"Months\";\n TranslationType[TranslationType[\"Eras\"] = 3] = \"Eras\";\n})(TranslationType || (TranslationType = {}));\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date according to locale rules.\n *\n * @param value The date to format, as a Date, or a number (milliseconds since UTC epoch)\n * or an [ISO date-time string](https://www.w3.org/TR/NOTE-datetime).\n * @param format The date-time components to include. See `DatePipe` for details.\n * @param locale A locale code for the locale format rules to use.\n * @param timezone The time zone. A time zone offset from GMT (such as `'+0430'`),\n * or a standard UTC/GMT or continental US time zone abbreviation.\n * If not specified, uses host system settings.\n *\n * @returns The formatted date string.\n *\n * @see `DatePipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatDate(value, format, locale, timezone) {\n let date = toDate(value);\n const namedFormat = getNamedFormat(locale, format);\n format = namedFormat || format;\n let parts = [];\n let match;\n while (format) {\n match = DATE_FORMATS_SPLIT.exec(format);\n if (match) {\n parts = parts.concat(match.slice(1));\n const part = parts.pop();\n if (!part) {\n break;\n }\n format = part;\n }\n else {\n parts.push(format);\n break;\n }\n }\n let dateTimezoneOffset = date.getTimezoneOffset();\n if (timezone) {\n dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n date = convertTimezoneToLocal(date, timezone, true);\n }\n let text = '';\n parts.forEach(value => {\n const dateFormatter = getDateFormatter(value);\n text += dateFormatter ?\n dateFormatter(date, locale, dateTimezoneOffset) :\n value === '\\'\\'' ? '\\'' : value.replace(/(^'|'$)/g, '').replace(/''/g, '\\'');\n });\n return text;\n}\n/**\n * Create a new Date object with the given date value, and the time set to midnight.\n *\n * We cannot use `new Date(year, month, date)` because it maps years between 0 and 99 to 1900-1999.\n * See: https://github.com/angular/angular/issues/40377\n *\n * Note that this function returns a Date object whose time is midnight in the current locale's\n * timezone. In the future we might want to change this to be midnight in UTC, but this would be a\n * considerable breaking change.\n */\nfunction createDate(year, month, date) {\n // The `newDate` is set to midnight (UTC) on January 1st 1970.\n // - In PST this will be December 31st 1969 at 4pm.\n // - In GMT this will be January 1st 1970 at 1am.\n // Note that they even have different years, dates and months!\n const newDate = new Date(0);\n // `setFullYear()` allows years like 0001 to be set correctly. This function does not\n // change the internal time of the date.\n // Consider calling `setFullYear(2019, 8, 20)` (September 20, 2019).\n // - In PST this will now be September 20, 2019 at 4pm\n // - In GMT this will now be September 20, 2019 at 1am\n newDate.setFullYear(year, month, date);\n // We want the final date to be at local midnight, so we reset the time.\n // - In PST this will now be September 20, 2019 at 12am\n // - In GMT this will now be September 20, 2019 at 12am\n newDate.setHours(0, 0, 0);\n return newDate;\n}\nfunction getNamedFormat(locale, format) {\n const localeId = getLocaleId(locale);\n NAMED_FORMATS[localeId] = NAMED_FORMATS[localeId] || {};\n if (NAMED_FORMATS[localeId][format]) {\n return NAMED_FORMATS[localeId][format];\n }\n let formatValue = '';\n switch (format) {\n case 'shortDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Short);\n break;\n case 'mediumDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Medium);\n break;\n case 'longDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Long);\n break;\n case 'fullDate':\n formatValue = getLocaleDateFormat(locale, FormatWidth.Full);\n break;\n case 'shortTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Short);\n break;\n case 'mediumTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Medium);\n break;\n case 'longTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Long);\n break;\n case 'fullTime':\n formatValue = getLocaleTimeFormat(locale, FormatWidth.Full);\n break;\n case 'short':\n const shortTime = getNamedFormat(locale, 'shortTime');\n const shortDate = getNamedFormat(locale, 'shortDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Short), [shortTime, shortDate]);\n break;\n case 'medium':\n const mediumTime = getNamedFormat(locale, 'mediumTime');\n const mediumDate = getNamedFormat(locale, 'mediumDate');\n formatValue = formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Medium), [mediumTime, mediumDate]);\n break;\n case 'long':\n const longTime = getNamedFormat(locale, 'longTime');\n const longDate = getNamedFormat(locale, 'longDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Long), [longTime, longDate]);\n break;\n case 'full':\n const fullTime = getNamedFormat(locale, 'fullTime');\n const fullDate = getNamedFormat(locale, 'fullDate');\n formatValue =\n formatDateTime(getLocaleDateTimeFormat(locale, FormatWidth.Full), [fullTime, fullDate]);\n break;\n }\n if (formatValue) {\n NAMED_FORMATS[localeId][format] = formatValue;\n }\n return formatValue;\n}\nfunction formatDateTime(str, opt_values) {\n if (opt_values) {\n str = str.replace(/\\{([^}]+)}/g, function (match, key) {\n return (opt_values != null && key in opt_values) ? opt_values[key] : match;\n });\n }\n return str;\n}\nfunction padNumber(num, digits, minusSign = '-', trim, negWrap) {\n let neg = '';\n if (num < 0 || (negWrap && num <= 0)) {\n if (negWrap) {\n num = -num + 1;\n }\n else {\n num = -num;\n neg = minusSign;\n }\n }\n let strNum = String(num);\n while (strNum.length < digits) {\n strNum = '0' + strNum;\n }\n if (trim) {\n strNum = strNum.substr(strNum.length - digits);\n }\n return neg + strNum;\n}\nfunction formatFractionalSeconds(milliseconds, digits) {\n const strMs = padNumber(milliseconds, 3);\n return strMs.substr(0, digits);\n}\n/**\n * Returns a date formatter that transforms a date into its locale digit representation\n */\nfunction dateGetter(name, size, offset = 0, trim = false, negWrap = false) {\n return function (date, locale) {\n let part = getDatePart(name, date);\n if (offset > 0 || part > -offset) {\n part += offset;\n }\n if (name === DateType.Hours) {\n if (part === 0 && offset === -12) {\n part = 12;\n }\n }\n else if (name === DateType.FractionalSeconds) {\n return formatFractionalSeconds(part, size);\n }\n const localeMinus = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n return padNumber(part, size, localeMinus, trim, negWrap);\n };\n}\nfunction getDatePart(part, date) {\n switch (part) {\n case DateType.FullYear:\n return date.getFullYear();\n case DateType.Month:\n return date.getMonth();\n case DateType.Date:\n return date.getDate();\n case DateType.Hours:\n return date.getHours();\n case DateType.Minutes:\n return date.getMinutes();\n case DateType.Seconds:\n return date.getSeconds();\n case DateType.FractionalSeconds:\n return date.getMilliseconds();\n case DateType.Day:\n return date.getDay();\n default:\n throw new Error(`Unknown DateType value \"${part}\".`);\n }\n}\n/**\n * Returns a date formatter that transforms a date into its locale string representation\n */\nfunction dateStrGetter(name, width, form = FormStyle.Format, extended = false) {\n return function (date, locale) {\n return getDateTranslation(date, locale, name, width, form, extended);\n };\n}\n/**\n * Returns the locale translation of a date for a given form, type and width\n */\nfunction getDateTranslation(date, locale, name, width, form, extended) {\n switch (name) {\n case TranslationType.Months:\n return getLocaleMonthNames(locale, form, width)[date.getMonth()];\n case TranslationType.Days:\n return getLocaleDayNames(locale, form, width)[date.getDay()];\n case TranslationType.DayPeriods:\n const currentHours = date.getHours();\n const currentMinutes = date.getMinutes();\n if (extended) {\n const rules = getLocaleExtraDayPeriodRules(locale);\n const dayPeriods = getLocaleExtraDayPeriods(locale, form, width);\n const index = rules.findIndex(rule => {\n if (Array.isArray(rule)) {\n // morning, afternoon, evening, night\n const [from, to] = rule;\n const afterFrom = currentHours >= from.hours && currentMinutes >= from.minutes;\n const beforeTo = (currentHours < to.hours ||\n (currentHours === to.hours && currentMinutes < to.minutes));\n // We must account for normal rules that span a period during the day (e.g. 6am-9am)\n // where `from` is less (earlier) than `to`. But also rules that span midnight (e.g.\n // 10pm - 5am) where `from` is greater (later!) than `to`.\n //\n // In the first case the current time must be BOTH after `from` AND before `to`\n // (e.g. 8am is after 6am AND before 10am).\n //\n // In the second case the current time must be EITHER after `from` OR before `to`\n // (e.g. 4am is before 5am but not after 10pm; and 11pm is not before 5am but it is\n // after 10pm).\n if (from.hours < to.hours) {\n if (afterFrom && beforeTo) {\n return true;\n }\n }\n else if (afterFrom || beforeTo) {\n return true;\n }\n }\n else { // noon or midnight\n if (rule.hours === currentHours && rule.minutes === currentMinutes) {\n return true;\n }\n }\n return false;\n });\n if (index !== -1) {\n return dayPeriods[index];\n }\n }\n // if no rules for the day periods, we use am/pm by default\n return getLocaleDayPeriods(locale, form, width)[currentHours < 12 ? 0 : 1];\n case TranslationType.Eras:\n return getLocaleEraNames(locale, width)[date.getFullYear() <= 0 ? 0 : 1];\n default:\n // This default case is not needed by TypeScript compiler, as the switch is exhaustive.\n // However Closure Compiler does not understand that and reports an error in typed mode.\n // The `throw new Error` below works around the problem, and the unexpected: never variable\n // makes sure tsc still checks this code is unreachable.\n const unexpected = name;\n throw new Error(`unexpected translation type ${unexpected}`);\n }\n}\n/**\n * Returns a date formatter that transforms a date and an offset into a timezone with ISO8601 or\n * GMT format depending on the width (eg: short = +0430, short:GMT = GMT+4, long = GMT+04:30,\n * extended = +04:30)\n */\nfunction timeZoneGetter(width) {\n return function (date, locale, offset) {\n const zone = -1 * offset;\n const minusSign = getLocaleNumberSymbol(locale, NumberSymbol.MinusSign);\n const hours = zone > 0 ? Math.floor(zone / 60) : Math.ceil(zone / 60);\n switch (width) {\n case ZoneWidth.Short:\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.ShortGMT:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 1, minusSign);\n case ZoneWidth.Long:\n return 'GMT' + ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n case ZoneWidth.Extended:\n if (offset === 0) {\n return 'Z';\n }\n else {\n return ((zone >= 0) ? '+' : '') + padNumber(hours, 2, minusSign) + ':' +\n padNumber(Math.abs(zone % 60), 2, minusSign);\n }\n default:\n throw new Error(`Unknown zone width \"${width}\"`);\n }\n };\n}\nconst JANUARY = 0;\nconst THURSDAY = 4;\nfunction getFirstThursdayOfYear(year) {\n const firstDayOfYear = createDate(year, JANUARY, 1).getDay();\n return createDate(year, 0, 1 + ((firstDayOfYear <= THURSDAY) ? THURSDAY : THURSDAY + 7) - firstDayOfYear);\n}\nfunction getThursdayThisWeek(datetime) {\n return createDate(datetime.getFullYear(), datetime.getMonth(), datetime.getDate() + (THURSDAY - datetime.getDay()));\n}\nfunction weekGetter(size, monthBased = false) {\n return function (date, locale) {\n let result;\n if (monthBased) {\n const nbDaysBefore1stDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1).getDay() - 1;\n const today = date.getDate();\n result = 1 + Math.floor((today + nbDaysBefore1stDayOfMonth) / 7);\n }\n else {\n const thisThurs = getThursdayThisWeek(date);\n // Some days of a year are part of next year according to ISO 8601.\n // Compute the firstThurs from the year of this week's Thursday\n const firstThurs = getFirstThursdayOfYear(thisThurs.getFullYear());\n const diff = thisThurs.getTime() - firstThurs.getTime();\n result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week\n }\n return padNumber(result, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n };\n}\n/**\n * Returns a date formatter that provides the week-numbering year for the input date.\n */\nfunction weekNumberingYearGetter(size, trim = false) {\n return function (date, locale) {\n const thisThurs = getThursdayThisWeek(date);\n const weekNumberingYear = thisThurs.getFullYear();\n return padNumber(weekNumberingYear, size, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign), trim);\n };\n}\nconst DATE_FORMATS = {};\n// Based on CLDR formats:\n// See complete list: http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n// See also explanations: http://cldr.unicode.org/translation/date-time\n// TODO(ocombe): support all missing cldr formats: U, Q, D, F, e, j, J, C, A, v, V, X, x\nfunction getDateFormatter(format) {\n if (DATE_FORMATS[format]) {\n return DATE_FORMATS[format];\n }\n let formatter;\n switch (format) {\n // Era name (AD/BC)\n case 'G':\n case 'GG':\n case 'GGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Abbreviated);\n break;\n case 'GGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Wide);\n break;\n case 'GGGGG':\n formatter = dateStrGetter(TranslationType.Eras, TranslationWidth.Narrow);\n break;\n // 1 digit representation of the year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'y':\n formatter = dateGetter(DateType.FullYear, 1, 0, false, true);\n break;\n // 2 digit representation of the year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yy':\n formatter = dateGetter(DateType.FullYear, 2, 0, true, true);\n break;\n // 3 digit representation of the year, padded (000-999). (e.g. AD 2001 => 01, AD 2010 => 10)\n case 'yyy':\n formatter = dateGetter(DateType.FullYear, 3, 0, false, true);\n break;\n // 4 digit representation of the year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'yyyy':\n formatter = dateGetter(DateType.FullYear, 4, 0, false, true);\n break;\n // 1 digit representation of the week-numbering year, e.g. (AD 1 => 1, AD 199 => 199)\n case 'Y':\n formatter = weekNumberingYearGetter(1);\n break;\n // 2 digit representation of the week-numbering year, padded (00-99). (e.g. AD 2001 => 01, AD\n // 2010 => 10)\n case 'YY':\n formatter = weekNumberingYearGetter(2, true);\n break;\n // 3 digit representation of the week-numbering year, padded (000-999). (e.g. AD 1 => 001, AD\n // 2010 => 2010)\n case 'YYY':\n formatter = weekNumberingYearGetter(3);\n break;\n // 4 digit representation of the week-numbering year (e.g. AD 1 => 0001, AD 2010 => 2010)\n case 'YYYY':\n formatter = weekNumberingYearGetter(4);\n break;\n // Month of the year (1-12), numeric\n case 'M':\n case 'L':\n formatter = dateGetter(DateType.Month, 1, 1);\n break;\n case 'MM':\n case 'LL':\n formatter = dateGetter(DateType.Month, 2, 1);\n break;\n // Month of the year (January, ...), string, format\n case 'MMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated);\n break;\n case 'MMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Wide);\n break;\n case 'MMMMM':\n formatter = dateStrGetter(TranslationType.Months, TranslationWidth.Narrow);\n break;\n // Month of the year (January, ...), string, standalone\n case 'LLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'LLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'LLLLL':\n formatter =\n dateStrGetter(TranslationType.Months, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n // Week of the year (1, ... 52)\n case 'w':\n formatter = weekGetter(1);\n break;\n case 'ww':\n formatter = weekGetter(2);\n break;\n // Week of the month (1, ...)\n case 'W':\n formatter = weekGetter(1, true);\n break;\n // Day of the month (1-31)\n case 'd':\n formatter = dateGetter(DateType.Date, 1);\n break;\n case 'dd':\n formatter = dateGetter(DateType.Date, 2);\n break;\n // Day of the Week StandAlone (1, 1, Mon, Monday, M, Mo)\n case 'c':\n case 'cc':\n formatter = dateGetter(DateType.Day, 1);\n break;\n case 'ccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated, FormStyle.Standalone);\n break;\n case 'cccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide, FormStyle.Standalone);\n break;\n case 'ccccc':\n formatter =\n dateStrGetter(TranslationType.Days, TranslationWidth.Narrow, FormStyle.Standalone);\n break;\n case 'cccccc':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short, FormStyle.Standalone);\n break;\n // Day of the Week\n case 'E':\n case 'EE':\n case 'EEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Abbreviated);\n break;\n case 'EEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Wide);\n break;\n case 'EEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Narrow);\n break;\n case 'EEEEEE':\n formatter = dateStrGetter(TranslationType.Days, TranslationWidth.Short);\n break;\n // Generic period of the day (am-pm)\n case 'a':\n case 'aa':\n case 'aaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated);\n break;\n case 'aaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide);\n break;\n case 'aaaaa':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow);\n break;\n // Extended period of the day (midnight, at night, ...), standalone\n case 'b':\n case 'bb':\n case 'bbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Standalone, true);\n break;\n case 'bbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Standalone, true);\n break;\n case 'bbbbb':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Standalone, true);\n break;\n // Extended period of the day (midnight, night, ...), standalone\n case 'B':\n case 'BB':\n case 'BBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Abbreviated, FormStyle.Format, true);\n break;\n case 'BBBB':\n formatter =\n dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Wide, FormStyle.Format, true);\n break;\n case 'BBBBB':\n formatter = dateStrGetter(TranslationType.DayPeriods, TranslationWidth.Narrow, FormStyle.Format, true);\n break;\n // Hour in AM/PM, (1-12)\n case 'h':\n formatter = dateGetter(DateType.Hours, 1, -12);\n break;\n case 'hh':\n formatter = dateGetter(DateType.Hours, 2, -12);\n break;\n // Hour of the day (0-23)\n case 'H':\n formatter = dateGetter(DateType.Hours, 1);\n break;\n // Hour in day, padded (00-23)\n case 'HH':\n formatter = dateGetter(DateType.Hours, 2);\n break;\n // Minute of the hour (0-59)\n case 'm':\n formatter = dateGetter(DateType.Minutes, 1);\n break;\n case 'mm':\n formatter = dateGetter(DateType.Minutes, 2);\n break;\n // Second of the minute (0-59)\n case 's':\n formatter = dateGetter(DateType.Seconds, 1);\n break;\n case 'ss':\n formatter = dateGetter(DateType.Seconds, 2);\n break;\n // Fractional second\n case 'S':\n formatter = dateGetter(DateType.FractionalSeconds, 1);\n break;\n case 'SS':\n formatter = dateGetter(DateType.FractionalSeconds, 2);\n break;\n case 'SSS':\n formatter = dateGetter(DateType.FractionalSeconds, 3);\n break;\n // Timezone ISO8601 short format (-0430)\n case 'Z':\n case 'ZZ':\n case 'ZZZ':\n formatter = timeZoneGetter(ZoneWidth.Short);\n break;\n // Timezone ISO8601 extended format (-04:30)\n case 'ZZZZZ':\n formatter = timeZoneGetter(ZoneWidth.Extended);\n break;\n // Timezone GMT short format (GMT+4)\n case 'O':\n case 'OO':\n case 'OOO':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'z':\n case 'zz':\n case 'zzz':\n formatter = timeZoneGetter(ZoneWidth.ShortGMT);\n break;\n // Timezone GMT long format (GMT+0430)\n case 'OOOO':\n case 'ZZZZ':\n // Should be location, but fallback to format O instead because we don't have the data yet\n case 'zzzz':\n formatter = timeZoneGetter(ZoneWidth.Long);\n break;\n default:\n return null;\n }\n DATE_FORMATS[format] = formatter;\n return formatter;\n}\nfunction timezoneToOffset(timezone, fallback) {\n // Support: IE 11 only, Edge 13-15+\n // IE/Edge do not \"understand\" colon (`:`) in timezone\n timezone = timezone.replace(/:/g, '');\n const requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\n}\nfunction addDateMinutes(date, minutes) {\n date = new Date(date.getTime());\n date.setMinutes(date.getMinutes() + minutes);\n return date;\n}\nfunction convertTimezoneToLocal(date, timezone, reverse) {\n const reverseValue = reverse ? -1 : 1;\n const dateTimezoneOffset = date.getTimezoneOffset();\n const timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\n return addDateMinutes(date, reverseValue * (timezoneOffset - dateTimezoneOffset));\n}\n/**\n * Converts a value to date.\n *\n * Supported input formats:\n * - `Date`\n * - number: timestamp\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\n * Note: ISO strings without time return a date without timeoffset.\n *\n * Throws if unable to convert to a date.\n */\nfunction toDate(value) {\n if (isDate(value)) {\n return value;\n }\n if (typeof value === 'number' && !isNaN(value)) {\n return new Date(value);\n }\n if (typeof value === 'string') {\n value = value.trim();\n if (/^(\\d{4}(-\\d{1,2}(-\\d{1,2})?)?)$/.test(value)) {\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\n before Date creation to avoid time offset and errors in the new Date.\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\n is applied.\n Note: ISO months are 0 for January, 1 for February, ... */\n const [y, m = 1, d = 1] = value.split('-').map((val) => +val);\n return createDate(y, m - 1, d);\n }\n const parsedNb = parseFloat(value);\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\n if (!isNaN(value - parsedNb)) {\n return new Date(parsedNb);\n }\n let match;\n if (match = value.match(ISO8601_DATE_REGEX)) {\n return isoStringToDate(match);\n }\n }\n const date = new Date(value);\n if (!isDate(date)) {\n throw new Error(`Unable to convert \"${value}\" into a date`);\n }\n return date;\n}\n/**\n * Converts a date in ISO8601 to a Date.\n * Used instead of `Date.parse` because of browser discrepancies.\n */\nfunction isoStringToDate(match) {\n const date = new Date(0);\n let tzHour = 0;\n let tzMin = 0;\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\n if (match[9]) {\n tzHour = Number(match[9] + match[10]);\n tzMin = Number(match[9] + match[11]);\n }\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\n const h = Number(match[4] || 0) - tzHour;\n const m = Number(match[5] || 0) - tzMin;\n const s = Number(match[6] || 0);\n // The ECMAScript specification (https://www.ecma-international.org/ecma-262/5.1/#sec-15.9.1.11)\n // defines that `DateTime` milliseconds should always be rounded down, so that `999.9ms`\n // becomes `999ms`.\n const ms = Math.floor(parseFloat('0.' + (match[7] || 0)) * 1000);\n timeSetter.call(date, h, m, s, ms);\n return date;\n}\nfunction isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst NUMBER_FORMAT_REGEXP = /^(\\d+)?\\.((\\d+)(-(\\d+))?)?$/;\nconst MAX_DIGITS = 22;\nconst DECIMAL_SEP = '.';\nconst ZERO_CHAR = '0';\nconst PATTERN_SEP = ';';\nconst GROUP_SEP = ',';\nconst DIGIT_CHAR = '#';\nconst CURRENCY_CHAR = '¤';\nconst PERCENT_CHAR = '%';\n/**\n * Transforms a number to a locale string based on a style and a format.\n */\nfunction formatNumberToLocaleString(value, pattern, locale, groupSymbol, decimalSymbol, digitsInfo, isPercent = false) {\n let formattedText = '';\n let isZero = false;\n if (!isFinite(value)) {\n formattedText = getLocaleNumberSymbol(locale, NumberSymbol.Infinity);\n }\n else {\n let parsedNumber = parseNumber(value);\n if (isPercent) {\n parsedNumber = toPercent(parsedNumber);\n }\n let minInt = pattern.minInt;\n let minFraction = pattern.minFrac;\n let maxFraction = pattern.maxFrac;\n if (digitsInfo) {\n const parts = digitsInfo.match(NUMBER_FORMAT_REGEXP);\n if (parts === null) {\n throw new Error(`${digitsInfo} is not a valid digit info`);\n }\n const minIntPart = parts[1];\n const minFractionPart = parts[3];\n const maxFractionPart = parts[5];\n if (minIntPart != null) {\n minInt = parseIntAutoRadix(minIntPart);\n }\n if (minFractionPart != null) {\n minFraction = parseIntAutoRadix(minFractionPart);\n }\n if (maxFractionPart != null) {\n maxFraction = parseIntAutoRadix(maxFractionPart);\n }\n else if (minFractionPart != null && minFraction > maxFraction) {\n maxFraction = minFraction;\n }\n }\n roundNumber(parsedNumber, minFraction, maxFraction);\n let digits = parsedNumber.digits;\n let integerLen = parsedNumber.integerLen;\n const exponent = parsedNumber.exponent;\n let decimals = [];\n isZero = digits.every(d => !d);\n // pad zeros for small numbers\n for (; integerLen < minInt; integerLen++) {\n digits.unshift(0);\n }\n // pad zeros for small numbers\n for (; integerLen < 0; integerLen++) {\n digits.unshift(0);\n }\n // extract decimals digits\n if (integerLen > 0) {\n decimals = digits.splice(integerLen, digits.length);\n }\n else {\n decimals = digits;\n digits = [0];\n }\n // format the integer digits with grouping separators\n const groups = [];\n if (digits.length >= pattern.lgSize) {\n groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));\n }\n while (digits.length > pattern.gSize) {\n groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));\n }\n if (digits.length) {\n groups.unshift(digits.join(''));\n }\n formattedText = groups.join(getLocaleNumberSymbol(locale, groupSymbol));\n // append the decimal digits\n if (decimals.length) {\n formattedText += getLocaleNumberSymbol(locale, decimalSymbol) + decimals.join('');\n }\n if (exponent) {\n formattedText += getLocaleNumberSymbol(locale, NumberSymbol.Exponential) + '+' + exponent;\n }\n }\n if (value < 0 && !isZero) {\n formattedText = pattern.negPre + formattedText + pattern.negSuf;\n }\n else {\n formattedText = pattern.posPre + formattedText + pattern.posSuf;\n }\n return formattedText;\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as currency using locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param currency A string containing the currency symbol or its name,\n * such as \"$\" or \"Canadian Dollar\". Used in output string, but does not affect the operation\n * of the function.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)\n * currency code, such as `USD` for the US dollar and `EUR` for the euro.\n * Used to determine the number of digits in the decimal part.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted currency value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatCurrency(value, locale, currency, currencyCode, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Currency);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n pattern.minFrac = getNumberOfCurrencyDigits(currencyCode);\n pattern.maxFrac = pattern.minFrac;\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.CurrencyGroup, NumberSymbol.CurrencyDecimal, digitsInfo);\n return res\n .replace(CURRENCY_CHAR, currency)\n // if we have 2 time the currency character, the second one is ignored\n .replace(CURRENCY_CHAR, '')\n // If there is a spacing between currency character and the value and\n // the currency character is supressed by passing an empty string, the\n // spacing character would remain as part of the string. Then we\n // should remove it.\n .trim();\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as a percentage according to locale rules.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted percentage value.\n *\n * @see `formatNumber()`\n * @see `DecimalPipe`\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n * @publicApi\n *\n */\nfunction formatPercent(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Percent);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n const res = formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo, true);\n return res.replace(new RegExp(PERCENT_CHAR, 'g'), getLocaleNumberSymbol(locale, NumberSymbol.PercentSign));\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a number as text, with group sizing, separator, and other\n * parameters based on the locale.\n *\n * @param value The number to format.\n * @param locale A locale code for the locale format rules to use.\n * @param digitsInfo Decimal representation options, specified by a string in the following format:\n * `{minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}`. See `DecimalPipe` for more details.\n *\n * @returns The formatted text string.\n * @see [Internationalization (i18n) Guide](https://angular.io/guide/i18n-overview)\n *\n * @publicApi\n */\nfunction formatNumber(value, locale, digitsInfo) {\n const format = getLocaleNumberFormat(locale, NumberFormatStyle.Decimal);\n const pattern = parseNumberFormat(format, getLocaleNumberSymbol(locale, NumberSymbol.MinusSign));\n return formatNumberToLocaleString(value, pattern, locale, NumberSymbol.Group, NumberSymbol.Decimal, digitsInfo);\n}\nfunction parseNumberFormat(format, minusSign = '-') {\n const p = {\n minInt: 1,\n minFrac: 0,\n maxFrac: 0,\n posPre: '',\n posSuf: '',\n negPre: '',\n negSuf: '',\n gSize: 0,\n lgSize: 0\n };\n const patternParts = format.split(PATTERN_SEP);\n const positive = patternParts[0];\n const negative = patternParts[1];\n const positiveParts = positive.indexOf(DECIMAL_SEP) !== -1 ?\n positive.split(DECIMAL_SEP) :\n [\n positive.substring(0, positive.lastIndexOf(ZERO_CHAR) + 1),\n positive.substring(positive.lastIndexOf(ZERO_CHAR) + 1)\n ], integer = positiveParts[0], fraction = positiveParts[1] || '';\n p.posPre = integer.substr(0, integer.indexOf(DIGIT_CHAR));\n for (let i = 0; i < fraction.length; i++) {\n const ch = fraction.charAt(i);\n if (ch === ZERO_CHAR) {\n p.minFrac = p.maxFrac = i + 1;\n }\n else if (ch === DIGIT_CHAR) {\n p.maxFrac = i + 1;\n }\n else {\n p.posSuf += ch;\n }\n }\n const groups = integer.split(GROUP_SEP);\n p.gSize = groups[1] ? groups[1].length : 0;\n p.lgSize = (groups[2] || groups[1]) ? (groups[2] || groups[1]).length : 0;\n if (negative) {\n const trunkLen = positive.length - p.posPre.length - p.posSuf.length, pos = negative.indexOf(DIGIT_CHAR);\n p.negPre = negative.substr(0, pos).replace(/'/g, '');\n p.negSuf = negative.substr(pos + trunkLen).replace(/'/g, '');\n }\n else {\n p.negPre = minusSign + p.posPre;\n p.negSuf = p.posSuf;\n }\n return p;\n}\n// Transforms a parsed number into a percentage by multiplying it by 100\nfunction toPercent(parsedNumber) {\n // if the number is 0, don't do anything\n if (parsedNumber.digits[0] === 0) {\n return parsedNumber;\n }\n // Getting the current number of decimals\n const fractionLen = parsedNumber.digits.length - parsedNumber.integerLen;\n if (parsedNumber.exponent) {\n parsedNumber.exponent += 2;\n }\n else {\n if (fractionLen === 0) {\n parsedNumber.digits.push(0, 0);\n }\n else if (fractionLen === 1) {\n parsedNumber.digits.push(0);\n }\n parsedNumber.integerLen += 2;\n }\n return parsedNumber;\n}\n/**\n * Parses a number.\n * Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/\n */\nfunction parseNumber(num) {\n let numStr = Math.abs(num) + '';\n let exponent = 0, digits, integerLen;\n let i, j, zeros;\n // Decimal point?\n if ((integerLen = numStr.indexOf(DECIMAL_SEP)) > -1) {\n numStr = numStr.replace(DECIMAL_SEP, '');\n }\n // Exponential form?\n if ((i = numStr.search(/e/i)) > 0) {\n // Work out the exponent.\n if (integerLen < 0)\n integerLen = i;\n integerLen += +numStr.slice(i + 1);\n numStr = numStr.substring(0, i);\n }\n else if (integerLen < 0) {\n // There was no decimal point or exponent so it is an integer.\n integerLen = numStr.length;\n }\n // Count the number of leading zeros.\n for (i = 0; numStr.charAt(i) === ZERO_CHAR; i++) { /* empty */\n }\n if (i === (zeros = numStr.length)) {\n // The digits are all zero.\n digits = [0];\n integerLen = 1;\n }\n else {\n // Count the number of trailing zeros\n zeros--;\n while (numStr.charAt(zeros) === ZERO_CHAR)\n zeros--;\n // Trailing zeros are insignificant so ignore them\n integerLen -= i;\n digits = [];\n // Convert string to array of digits without leading/trailing zeros.\n for (j = 0; i <= zeros; i++, j++) {\n digits[j] = Number(numStr.charAt(i));\n }\n }\n // If the number overflows the maximum allowed digits then use an exponent.\n if (integerLen > MAX_DIGITS) {\n digits = digits.splice(0, MAX_DIGITS - 1);\n exponent = integerLen - 1;\n integerLen = 1;\n }\n return { digits, exponent, integerLen };\n}\n/**\n * Round the parsed number to the specified number of decimal places\n * This function changes the parsedNumber in-place\n */\nfunction roundNumber(parsedNumber, minFrac, maxFrac) {\n if (minFrac > maxFrac) {\n throw new Error(`The minimum number of digits after fraction (${minFrac}) is higher than the maximum (${maxFrac}).`);\n }\n let digits = parsedNumber.digits;\n let fractionLen = digits.length - parsedNumber.integerLen;\n const fractionSize = Math.min(Math.max(minFrac, fractionLen), maxFrac);\n // The index of the digit to where rounding is to occur\n let roundAt = fractionSize + parsedNumber.integerLen;\n let digit = digits[roundAt];\n if (roundAt > 0) {\n // Drop fractional digits beyond `roundAt`\n digits.splice(Math.max(parsedNumber.integerLen, roundAt));\n // Set non-fractional digits beyond `roundAt` to 0\n for (let j = roundAt; j < digits.length; j++) {\n digits[j] = 0;\n }\n }\n else {\n // We rounded to zero so reset the parsedNumber\n fractionLen = Math.max(0, fractionLen);\n parsedNumber.integerLen = 1;\n digits.length = Math.max(1, roundAt = fractionSize + 1);\n digits[0] = 0;\n for (let i = 1; i < roundAt; i++)\n digits[i] = 0;\n }\n if (digit >= 5) {\n if (roundAt - 1 < 0) {\n for (let k = 0; k > roundAt; k--) {\n digits.unshift(0);\n parsedNumber.integerLen++;\n }\n digits.unshift(1);\n parsedNumber.integerLen++;\n }\n else {\n digits[roundAt - 1]++;\n }\n }\n // Pad out with zeros to get the required fraction length\n for (; fractionLen < Math.max(0, fractionSize); fractionLen++)\n digits.push(0);\n let dropTrailingZeros = fractionSize !== 0;\n // Minimal length = nb of decimals required + current nb of integers\n // Any number besides that is optional and can be removed if it's a trailing 0\n const minLen = minFrac + parsedNumber.integerLen;\n // Do any carrying, e.g. a digit was rounded up to 10\n const carry = digits.reduceRight(function (carry, d, i, digits) {\n d = d + carry;\n digits[i] = d < 10 ? d : d - 10; // d % 10\n if (dropTrailingZeros) {\n // Do not keep meaningless fractional trailing zeros (e.g. 15.52000 --> 15.52)\n if (digits[i] === 0 && i >= minLen) {\n digits.pop();\n }\n else {\n dropTrailingZeros = false;\n }\n }\n return d >= 10 ? 1 : 0; // Math.floor(d / 10);\n }, 0);\n if (carry) {\n digits.unshift(carry);\n parsedNumber.integerLen++;\n }\n}\nfunction parseIntAutoRadix(text) {\n const result = parseInt(text);\n if (isNaN(result)) {\n throw new Error('Invalid integer literal when parsing ' + text);\n }\n return result;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgLocalization {\n}\n/**\n * Returns the plural category for a given value.\n * - \"=value\" when the case exists,\n * - the plural category otherwise\n */\nfunction getPluralCategory(value, cases, ngLocalization, locale) {\n let key = `=${value}`;\n if (cases.indexOf(key) > -1) {\n return key;\n }\n key = ngLocalization.getPluralCategory(value, locale);\n if (cases.indexOf(key) > -1) {\n return key;\n }\n if (cases.indexOf('other') > -1) {\n return 'other';\n }\n throw new Error(`No plural message found for value \"${value}\"`);\n}\n/**\n * Returns the plural case based on the locale\n *\n * @publicApi\n */\nclass NgLocaleLocalization extends NgLocalization {\n constructor(locale) {\n super();\n this.locale = locale;\n }\n getPluralCategory(value, locale) {\n const plural = getLocalePluralCase(locale || this.locale)(value);\n switch (plural) {\n case Plural.Zero:\n return 'zero';\n case Plural.One:\n return 'one';\n case Plural.Two:\n return 'two';\n case Plural.Few:\n return 'few';\n case Plural.Many:\n return 'many';\n default:\n return 'other';\n }\n }\n}\nNgLocaleLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgLocaleLocalization, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Injectable });\nNgLocaleLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgLocaleLocalization });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgLocaleLocalization, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Register global data to be used internally by Angular. See the\n * [\"I18n guide\"](guide/i18n-common-format-data-locale) to know how to import additional locale\n * data.\n *\n * The signature registerLocaleData(data: any, extraData?: any) is deprecated since v5.1\n *\n * @publicApi\n */\nfunction registerLocaleData(data, localeId, extraData) {\n return ɵregisterLocaleData(data, localeId, extraData);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction parseCookieValue(cookieStr, name) {\n name = encodeURIComponent(name);\n for (const cookie of cookieStr.split(';')) {\n const eqIndex = cookie.indexOf('=');\n const [cookieName, cookieValue] = eqIndex == -1 ? [cookie, ''] : [cookie.slice(0, eqIndex), cookie.slice(eqIndex + 1)];\n if (cookieName.trim() === name) {\n return decodeURIComponent(cookieValue);\n }\n }\n return null;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n *\n * ...\n * ```\n *\n * @description\n *\n * Adds and removes CSS classes on an HTML element.\n *\n * The CSS classes are updated as follows, depending on the type of the expression evaluation:\n * - `string` - the CSS classes listed in the string (space delimited) are added,\n * - `Array` - the CSS classes declared as Array elements are added,\n * - `Object` - keys are CSS classes that get added when the expression given in the value\n * evaluates to a truthy value, otherwise they are removed.\n *\n * @publicApi\n */\nclass NgClass {\n constructor(_iterableDiffers, _keyValueDiffers, _ngEl, _renderer) {\n this._iterableDiffers = _iterableDiffers;\n this._keyValueDiffers = _keyValueDiffers;\n this._ngEl = _ngEl;\n this._renderer = _renderer;\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._initialClasses = [];\n this._rawClass = null;\n }\n set klass(value) {\n this._removeClasses(this._initialClasses);\n this._initialClasses = typeof value === 'string' ? value.split(/\\s+/) : [];\n this._applyClasses(this._initialClasses);\n this._applyClasses(this._rawClass);\n }\n set ngClass(value) {\n this._removeClasses(this._rawClass);\n this._applyClasses(this._initialClasses);\n this._iterableDiffer = null;\n this._keyValueDiffer = null;\n this._rawClass = typeof value === 'string' ? value.split(/\\s+/) : value;\n if (this._rawClass) {\n if (ɵisListLikeIterable(this._rawClass)) {\n this._iterableDiffer = this._iterableDiffers.find(this._rawClass).create();\n }\n else {\n this._keyValueDiffer = this._keyValueDiffers.find(this._rawClass).create();\n }\n }\n }\n ngDoCheck() {\n if (this._iterableDiffer) {\n const iterableChanges = this._iterableDiffer.diff(this._rawClass);\n if (iterableChanges) {\n this._applyIterableChanges(iterableChanges);\n }\n }\n else if (this._keyValueDiffer) {\n const keyValueChanges = this._keyValueDiffer.diff(this._rawClass);\n if (keyValueChanges) {\n this._applyKeyValueChanges(keyValueChanges);\n }\n }\n }\n _applyKeyValueChanges(changes) {\n changes.forEachAddedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._toggleClass(record.key, record.currentValue));\n changes.forEachRemovedItem((record) => {\n if (record.previousValue) {\n this._toggleClass(record.key, false);\n }\n });\n }\n _applyIterableChanges(changes) {\n changes.forEachAddedItem((record) => {\n if (typeof record.item === 'string') {\n this._toggleClass(record.item, true);\n }\n else {\n throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ɵstringify(record.item)}`);\n }\n });\n changes.forEachRemovedItem((record) => this._toggleClass(record.item, false));\n }\n /**\n * Applies a collection of CSS classes to the DOM element.\n *\n * For argument of type Set and Array CSS class names contained in those collections are always\n * added.\n * For argument of type Map CSS class name in the map's key is toggled based on the value (added\n * for truthy and removed for falsy).\n */\n _applyClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, true));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, !!rawClassVal[klass]));\n }\n }\n }\n /**\n * Removes a collection of CSS classes from the DOM element. This is mostly useful for cleanup\n * purposes.\n */\n _removeClasses(rawClassVal) {\n if (rawClassVal) {\n if (Array.isArray(rawClassVal) || rawClassVal instanceof Set) {\n rawClassVal.forEach((klass) => this._toggleClass(klass, false));\n }\n else {\n Object.keys(rawClassVal).forEach(klass => this._toggleClass(klass, false));\n }\n }\n }\n _toggleClass(klass, enabled) {\n klass = klass.trim();\n if (klass) {\n klass.split(/\\s+/g).forEach(klass => {\n if (enabled) {\n this._renderer.addClass(this._ngEl.nativeElement, klass);\n }\n else {\n this._renderer.removeClass(this._ngEl.nativeElement, klass);\n }\n });\n }\n }\n}\nNgClass.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgClass, deps: [{ token: i0.IterableDiffers }, { token: i0.KeyValueDiffers }, { token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgClass.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgClass, selector: \"[ngClass]\", inputs: { klass: [\"class\", \"klass\"], ngClass: \"ngClass\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgClass, decorators: [{\n type: Directive,\n args: [{ selector: '[ngClass]' }]\n }], ctorParameters: function () { return [{ type: i0.IterableDiffers }, { type: i0.KeyValueDiffers }, { type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { klass: [{\n type: Input,\n args: ['class']\n }], ngClass: [{\n type: Input,\n args: ['ngClass']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Instantiates a {@link Component} type and inserts its Host View into the current View.\n * `NgComponentOutlet` provides a declarative approach for dynamic component creation.\n *\n * `NgComponentOutlet` requires a component type, if a falsy value is set the view will clear and\n * any existing component will be destroyed.\n *\n * @usageNotes\n *\n * ### Fine tune control\n *\n * You can control the component creation process by using the following optional attributes:\n *\n * * `ngComponentOutletInjector`: Optional custom {@link Injector} that will be used as parent for\n * the Component. Defaults to the injector of the current view container.\n *\n * * `ngComponentOutletContent`: Optional list of projectable nodes to insert into the content\n * section of the component, if it exists.\n *\n * * `ngComponentOutletNgModuleFactory`: Optional module factory to allow loading another\n * module dynamically, then loading a component from that module.\n *\n * ### Syntax\n *\n * Simple\n * ```\n * \n * ```\n *\n * Customized injector/content\n * ```\n * \n * \n * ```\n *\n * Customized ngModuleFactory\n * ```\n * \n * \n * ```\n *\n * ### A simple example\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='SimpleExample'}\n *\n * A more complete example with additional options:\n *\n * {@example common/ngComponentOutlet/ts/module.ts region='CompleteExample'}\n *\n * @publicApi\n * @ngModule CommonModule\n */\nclass NgComponentOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._componentRef = null;\n this._moduleRef = null;\n }\n ngOnChanges(changes) {\n this._viewContainerRef.clear();\n this._componentRef = null;\n if (this.ngComponentOutlet) {\n const elInjector = this.ngComponentOutletInjector || this._viewContainerRef.parentInjector;\n if (changes['ngComponentOutletNgModuleFactory']) {\n if (this._moduleRef)\n this._moduleRef.destroy();\n if (this.ngComponentOutletNgModuleFactory) {\n const parentModule = elInjector.get(NgModuleRef);\n this._moduleRef = this.ngComponentOutletNgModuleFactory.create(parentModule.injector);\n }\n else {\n this._moduleRef = null;\n }\n }\n const componentFactoryResolver = this._moduleRef ? this._moduleRef.componentFactoryResolver :\n elInjector.get(ComponentFactoryResolver);\n const componentFactory = componentFactoryResolver.resolveComponentFactory(this.ngComponentOutlet);\n this._componentRef = this._viewContainerRef.createComponent(componentFactory, this._viewContainerRef.length, elInjector, this.ngComponentOutletContent);\n }\n }\n ngOnDestroy() {\n if (this._moduleRef)\n this._moduleRef.destroy();\n }\n}\nNgComponentOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgComponentOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgComponentOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgComponentOutlet, selector: \"[ngComponentOutlet]\", inputs: { ngComponentOutlet: \"ngComponentOutlet\", ngComponentOutletInjector: \"ngComponentOutletInjector\", ngComponentOutletContent: \"ngComponentOutletContent\", ngComponentOutletNgModuleFactory: \"ngComponentOutletNgModuleFactory\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgComponentOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngComponentOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngComponentOutlet: [{\n type: Input\n }], ngComponentOutletInjector: [{\n type: Input\n }], ngComponentOutletContent: [{\n type: Input\n }], ngComponentOutletNgModuleFactory: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nclass NgForOfContext {\n constructor($implicit, ngForOf, index, count) {\n this.$implicit = $implicit;\n this.ngForOf = ngForOf;\n this.index = index;\n this.count = count;\n }\n get first() {\n return this.index === 0;\n }\n get last() {\n return this.index === this.count - 1;\n }\n get even() {\n return this.index % 2 === 0;\n }\n get odd() {\n return !this.even;\n }\n}\n/**\n * A [structural directive](guide/structural-directives) that renders\n * a template for each item in a collection.\n * The directive is placed on an element, which becomes the parent\n * of the cloned templates.\n *\n * The `ngForOf` directive is generally used in the\n * [shorthand form](guide/structural-directives#asterisk) `*ngFor`.\n * In this form, the template to be rendered for each iteration is the content\n * of an anchor element containing the directive.\n *\n * The following example shows the shorthand syntax with some options,\n * contained in an `
  • ` element.\n *\n * ```\n *
  • ...
  • \n * ```\n *\n * The shorthand form expands into a long form that uses the `ngForOf` selector\n * on an `` element.\n * The content of the `` element is the `
  • ` element that held the\n * short-form directive.\n *\n * Here is the expanded version of the short-form example.\n *\n * ```\n * \n *
  • ...
  • \n *
    \n * ```\n *\n * Angular automatically expands the shorthand syntax as it compiles the template.\n * The context for each embedded view is logically merged to the current component\n * context according to its lexical position.\n *\n * When using the shorthand syntax, Angular allows only [one structural directive\n * on an element](guide/built-in-directives#one-per-element).\n * If you want to iterate conditionally, for example,\n * put the `*ngIf` on a container element that wraps the `*ngFor` element.\n * For futher discussion, see\n * [Structural Directives](guide/built-in-directives#one-per-element).\n *\n * @usageNotes\n *\n * ### Local variables\n *\n * `NgForOf` provides exported values that can be aliased to local variables.\n * For example:\n *\n * ```\n *
  • \n * {{i}}/{{users.length}}. {{user}} default\n *
  • \n * ```\n *\n * The following exported values can be aliased to local variables:\n *\n * - `$implicit: T`: The value of the individual items in the iterable (`ngForOf`).\n * - `ngForOf: NgIterable`: The value of the iterable expression. Useful when the expression is\n * more complex then a property access, for example when using the async pipe (`userStreams |\n * async`).\n * - `index: number`: The index of the current item in the iterable.\n * - `count: number`: The length of the iterable.\n * - `first: boolean`: True when the item is the first item in the iterable.\n * - `last: boolean`: True when the item is the last item in the iterable.\n * - `even: boolean`: True when the item has an even index in the iterable.\n * - `odd: boolean`: True when the item has an odd index in the iterable.\n *\n * ### Change propagation\n *\n * When the contents of the iterator changes, `NgForOf` makes the corresponding changes to the DOM:\n *\n * * When an item is added, a new instance of the template is added to the DOM.\n * * When an item is removed, its template instance is removed from the DOM.\n * * When items are reordered, their respective templates are reordered in the DOM.\n *\n * Angular uses object identity to track insertions and deletions within the iterator and reproduce\n * those changes in the DOM. This has important implications for animations and any stateful\n * controls that are present, such as `` elements that accept user input. Inserted rows can\n * be animated in, deleted rows can be animated out, and unchanged rows retain any unsaved state\n * such as user input.\n * For more on animations, see [Transitions and Triggers](guide/transition-and-triggers).\n *\n * The identities of elements in the iterator can change while the data does not.\n * This can happen, for example, if the iterator is produced from an RPC to the server, and that\n * RPC is re-run. Even if the data hasn't changed, the second response produces objects with\n * different identities, and Angular must tear down the entire DOM and rebuild it (as if all old\n * elements were deleted and all new elements inserted).\n *\n * To avoid this expensive operation, you can customize the default tracking algorithm.\n * by supplying the `trackBy` option to `NgForOf`.\n * `trackBy` takes a function that has two arguments: `index` and `item`.\n * If `trackBy` is given, Angular tracks changes by the return value of the function.\n *\n * @see [Structural Directives](guide/structural-directives)\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgForOf {\n constructor(_viewContainer, _template, _differs) {\n this._viewContainer = _viewContainer;\n this._template = _template;\n this._differs = _differs;\n this._ngForOf = null;\n this._ngForOfDirty = true;\n this._differ = null;\n }\n /**\n * The value of the iterable expression, which can be used as a\n * [template input variable](guide/structural-directives#shorthand).\n */\n set ngForOf(ngForOf) {\n this._ngForOf = ngForOf;\n this._ngForOfDirty = true;\n }\n /**\n * Specifies a custom `TrackByFunction` to compute the identity of items in an iterable.\n *\n * If a custom `TrackByFunction` is not provided, `NgForOf` will use the item's [object\n * identity](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is)\n * as the key.\n *\n * `NgForOf` uses the computed key to associate items in an iterable with DOM elements\n * it produces for these items.\n *\n * A custom `TrackByFunction` is useful to provide good user experience in cases when items in an\n * iterable rendered using `NgForOf` have a natural identifier (for example, custom ID or a\n * primary key), and this iterable could be updated with new object instances that still\n * represent the same underlying entity (for example, when data is re-fetched from the server,\n * and the iterable is recreated and re-rendered, but most of the data is still the same).\n *\n * @see `TrackByFunction`\n */\n set ngForTrackBy(fn) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && fn != null && typeof fn !== 'function') {\n // TODO(vicb): use a log service once there is a public one available\n if (console && console.warn) {\n console.warn(`trackBy must be a function, but received ${JSON.stringify(fn)}. ` +\n `See https://angular.io/api/common/NgForOf#change-propagation for more information.`);\n }\n }\n this._trackByFn = fn;\n }\n get ngForTrackBy() {\n return this._trackByFn;\n }\n /**\n * A reference to the template that is stamped out for each item in the iterable.\n * @see [template reference variable](guide/template-reference-variables)\n */\n set ngForTemplate(value) {\n // TODO(TS2.1): make TemplateRef>> once we move to TS v2.1\n // The current type is too restrictive; a template that just uses index, for example,\n // should be acceptable.\n if (value) {\n this._template = value;\n }\n }\n /**\n * Applies the changes when needed.\n */\n ngDoCheck() {\n if (this._ngForOfDirty) {\n this._ngForOfDirty = false;\n // React on ngForOf changes only once all inputs have been initialized\n const value = this._ngForOf;\n if (!this._differ && value) {\n try {\n this._differ = this._differs.find(value).create(this.ngForTrackBy);\n }\n catch {\n throw new Error(`Cannot find a differ supporting object '${value}' of type '${getTypeName(value)}'. NgFor only supports binding to Iterables such as Arrays.`);\n }\n }\n }\n if (this._differ) {\n const changes = this._differ.diff(this._ngForOf);\n if (changes)\n this._applyChanges(changes);\n }\n }\n _applyChanges(changes) {\n const insertTuples = [];\n changes.forEachOperation((item, adjustedPreviousIndex, currentIndex) => {\n if (item.previousIndex == null) {\n // NgForOf is never \"null\" or \"undefined\" here because the differ detected\n // that a new item needs to be inserted from the iterable. This implies that\n // there is an iterable value for \"_ngForOf\".\n const view = this._viewContainer.createEmbeddedView(this._template, new NgForOfContext(null, this._ngForOf, -1, -1), currentIndex === null ? undefined : currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n else if (currentIndex == null) {\n this._viewContainer.remove(adjustedPreviousIndex === null ? undefined : adjustedPreviousIndex);\n }\n else if (adjustedPreviousIndex !== null) {\n const view = this._viewContainer.get(adjustedPreviousIndex);\n this._viewContainer.move(view, currentIndex);\n const tuple = new RecordViewTuple(item, view);\n insertTuples.push(tuple);\n }\n });\n for (let i = 0; i < insertTuples.length; i++) {\n this._perViewChange(insertTuples[i].view, insertTuples[i].record);\n }\n for (let i = 0, ilen = this._viewContainer.length; i < ilen; i++) {\n const viewRef = this._viewContainer.get(i);\n viewRef.context.index = i;\n viewRef.context.count = ilen;\n viewRef.context.ngForOf = this._ngForOf;\n }\n changes.forEachIdentityChange((record) => {\n const viewRef = this._viewContainer.get(record.currentIndex);\n viewRef.context.$implicit = record.item;\n });\n }\n _perViewChange(view, record) {\n view.context.$implicit = record.item;\n }\n /**\n * Asserts the correct type of the context for the template that `NgForOf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgForOf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgForOf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgForOf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Directive });\nNgForOf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgForOf, selector: \"[ngFor][ngForOf]\", inputs: { ngForOf: \"ngForOf\", ngForTrackBy: \"ngForTrackBy\", ngForTemplate: \"ngForTemplate\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgForOf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngFor][ngForOf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: i0.IterableDiffers }]; }, propDecorators: { ngForOf: [{\n type: Input\n }], ngForTrackBy: [{\n type: Input\n }], ngForTemplate: [{\n type: Input\n }] } });\nclass RecordViewTuple {\n constructor(record, view) {\n this.record = record;\n this.view = view;\n }\n}\nfunction getTypeName(type) {\n return type['name'] || typeof type;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A structural directive that conditionally includes a template based on the value of\n * an expression coerced to Boolean.\n * When the expression evaluates to true, Angular renders the template\n * provided in a `then` clause, and when false or null,\n * Angular renders the template provided in an optional `else` clause. The default\n * template for the `else` clause is blank.\n *\n * A [shorthand form](guide/structural-directives#asterisk) of the directive,\n * `*ngIf=\"condition\"`, is generally used, provided\n * as an attribute of the anchor element for the inserted template.\n * Angular expands this into a more explicit version, in which the anchor element\n * is contained in an `` element.\n *\n * Simple form with shorthand syntax:\n *\n * ```\n *
    Content to render when condition is true.
    \n * ```\n *\n * Simple form with expanded syntax:\n *\n * ```\n *
    Content to render when condition is\n * true.
    \n * ```\n *\n * Form with an \"else\" block:\n *\n * ```\n *
    Content to render when condition is true.
    \n * Content to render when condition is false.\n * ```\n *\n * Shorthand form with \"then\" and \"else\" blocks:\n *\n * ```\n *
    \n * Content to render when condition is true.\n * Content to render when condition is false.\n * ```\n *\n * Form with storing the value locally:\n *\n * ```\n *
    {{value}}
    \n * Content to render when value is null.\n * ```\n *\n * @usageNotes\n *\n * The `*ngIf` directive is most commonly used to conditionally show an inline template,\n * as seen in the following example.\n * The default `else` template is blank.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfSimple'}\n *\n * ### Showing an alternative template using `else`\n *\n * To display a template when `expression` evaluates to false, use an `else` template\n * binding as shown in the following example.\n * The `else` binding points to an `` element labeled `#elseBlock`.\n * The template can be defined anywhere in the component view, but is typically placed right after\n * `ngIf` for readability.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfElse'}\n *\n * ### Using an external `then` template\n *\n * In the previous example, the then-clause template is specified inline, as the content of the\n * tag that contains the `ngIf` directive. You can also specify a template that is defined\n * externally, by referencing a labeled `` element. When you do this, you can\n * change which template to use at runtime, as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfThenElse'}\n *\n * ### Storing a conditional result in a variable\n *\n * You might want to show a set of properties from the same object. If you are waiting\n * for asynchronous data, the object can be undefined.\n * In this case, you can use `ngIf` and store the result of the condition in a local\n * variable as shown in the following example.\n *\n * {@example common/ngIf/ts/module.ts region='NgIfAs'}\n *\n * This code uses only one `AsyncPipe`, so only one subscription is created.\n * The conditional statement stores the result of `userStream|async` in the local variable `user`.\n * You can then bind the local `user` repeatedly.\n *\n * The conditional displays the data only if `userStream` returns a value,\n * so you don't need to use the\n * safe-navigation-operator (`?.`)\n * to guard against null values when accessing properties.\n * You can display an alternative template while waiting for the data.\n *\n * ### Shorthand syntax\n *\n * The shorthand syntax `*ngIf` expands into two separate template specifications\n * for the \"then\" and \"else\" clauses. For example, consider the following shorthand statement,\n * that is meant to show a loading page while waiting for data to be loaded.\n *\n * ```\n *
    \n * ...\n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * You can see that the \"else\" clause references the ``\n * with the `#loading` label, and the template for the \"then\" clause\n * is provided as the content of the anchor element.\n *\n * However, when Angular expands the shorthand syntax, it creates\n * another `` tag, with `ngIf` and `ngIfElse` directives.\n * The anchor element containing the template for the \"then\" clause becomes\n * the content of this unlabeled `` tag.\n *\n * ```\n * \n *
    \n * ...\n *
    \n *
    \n *\n * \n *
    Loading...
    \n *
    \n * ```\n *\n * The presence of the implicit template object has implications for the nesting of\n * structural directives. For more on this subject, see\n * [Structural Directives](https://angular.io/guide/built-in-directives#one-per-element).\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass NgIf {\n constructor(_viewContainer, templateRef) {\n this._viewContainer = _viewContainer;\n this._context = new NgIfContext();\n this._thenTemplateRef = null;\n this._elseTemplateRef = null;\n this._thenViewRef = null;\n this._elseViewRef = null;\n this._thenTemplateRef = templateRef;\n }\n /**\n * The Boolean expression to evaluate as the condition for showing a template.\n */\n set ngIf(condition) {\n this._context.$implicit = this._context.ngIf = condition;\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to true.\n */\n set ngIfThen(templateRef) {\n assertTemplate('ngIfThen', templateRef);\n this._thenTemplateRef = templateRef;\n this._thenViewRef = null; // clear previous view if any.\n this._updateView();\n }\n /**\n * A template to show if the condition expression evaluates to false.\n */\n set ngIfElse(templateRef) {\n assertTemplate('ngIfElse', templateRef);\n this._elseTemplateRef = templateRef;\n this._elseViewRef = null; // clear previous view if any.\n this._updateView();\n }\n _updateView() {\n if (this._context.$implicit) {\n if (!this._thenViewRef) {\n this._viewContainer.clear();\n this._elseViewRef = null;\n if (this._thenTemplateRef) {\n this._thenViewRef =\n this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);\n }\n }\n }\n else {\n if (!this._elseViewRef) {\n this._viewContainer.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef =\n this._viewContainer.createEmbeddedView(this._elseTemplateRef, this._context);\n }\n }\n }\n }\n /**\n * Asserts the correct type of the context for the template that `NgIf` will render.\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * `NgIf` structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard(dir, ctx) {\n return true;\n }\n}\nNgIf.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgIf, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgIf.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgIf, selector: \"[ngIf]\", inputs: { ngIf: \"ngIf\", ngIfThen: \"ngIfThen\", ngIfElse: \"ngIfElse\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgIf, decorators: [{\n type: Directive,\n args: [{ selector: '[ngIf]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { ngIf: [{\n type: Input\n }], ngIfThen: [{\n type: Input\n }], ngIfElse: [{\n type: Input\n }] } });\n/**\n * @publicApi\n */\nclass NgIfContext {\n constructor() {\n this.$implicit = null;\n this.ngIf = null;\n }\n}\nfunction assertTemplate(property, templateRef) {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef, but received '${ɵstringify(templateRef)}'.`);\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SwitchView {\n constructor(_viewContainerRef, _templateRef) {\n this._viewContainerRef = _viewContainerRef;\n this._templateRef = _templateRef;\n this._created = false;\n }\n create() {\n this._created = true;\n this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n destroy() {\n this._created = false;\n this._viewContainerRef.clear();\n }\n enforceState(created) {\n if (created && !this._created) {\n this.create();\n }\n else if (!created && this._created) {\n this.destroy();\n }\n }\n}\n/**\n * @ngModule CommonModule\n *\n * @description\n * The `[ngSwitch]` directive on a container specifies an expression to match against.\n * The expressions to match are provided by `ngSwitchCase` directives on views within the container.\n * - Every view that matches is rendered.\n * - If there are no matches, a view with the `ngSwitchDefault` directive is rendered.\n * - Elements within the `[NgSwitch]` statement but outside of any `NgSwitchCase`\n * or `ngSwitchDefault` directive are preserved at the location.\n *\n * @usageNotes\n * Define a container element for the directive, and specify the switch expression\n * to match against as an attribute:\n *\n * ```\n * \n * ```\n *\n * Within the container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * ### Usage Examples\n *\n * The following example shows how to use more than one case to display the same view:\n *\n * ```\n * \n * \n * ...\n * ...\n * ...\n * \n * ...\n * \n * ```\n *\n * The following example shows how cases can be nested:\n * ```\n * \n * ...\n * ...\n * ...\n * \n * \n * \n * \n * \n * ...\n * \n * ```\n *\n * @publicApi\n * @see `NgSwitchCase`\n * @see `NgSwitchDefault`\n * @see [Structural Directives](guide/structural-directives)\n *\n */\nclass NgSwitch {\n constructor() {\n this._defaultUsed = false;\n this._caseCount = 0;\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n set ngSwitch(newValue) {\n this._ngSwitch = newValue;\n if (this._caseCount === 0) {\n this._updateDefaultCases(true);\n }\n }\n /** @internal */\n _addCase() {\n return this._caseCount++;\n }\n /** @internal */\n _addDefault(view) {\n if (!this._defaultViews) {\n this._defaultViews = [];\n }\n this._defaultViews.push(view);\n }\n /** @internal */\n _matchCase(value) {\n const matched = value == this._ngSwitch;\n this._lastCasesMatched = this._lastCasesMatched || matched;\n this._lastCaseCheckIndex++;\n if (this._lastCaseCheckIndex === this._caseCount) {\n this._updateDefaultCases(!this._lastCasesMatched);\n this._lastCaseCheckIndex = 0;\n this._lastCasesMatched = false;\n }\n return matched;\n }\n _updateDefaultCases(useDefault) {\n if (this._defaultViews && useDefault !== this._defaultUsed) {\n this._defaultUsed = useDefault;\n for (let i = 0; i < this._defaultViews.length; i++) {\n const defaultView = this._defaultViews[i];\n defaultView.enforceState(useDefault);\n }\n }\n }\n}\nNgSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitch, deps: [], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitch.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgSwitch, selector: \"[ngSwitch]\", inputs: { ngSwitch: \"ngSwitch\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitch, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitch]' }]\n }], propDecorators: { ngSwitch: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n * Provides a switch case expression to match against an enclosing `ngSwitch` expression.\n * When the expressions match, the given `NgSwitchCase` template is rendered.\n * If multiple match expressions match the switch expression value, all of them are displayed.\n *\n * @usageNotes\n *\n * Within a switch container, `*ngSwitchCase` statements specify the match expressions\n * as attributes. Include `*ngSwitchDefault` as the final case.\n *\n * ```\n * \n * ...\n * ...\n * ...\n * \n * ```\n *\n * Each switch-case statement contains an in-line HTML template or template reference\n * that defines the subtree to be selected if the value of the match expression\n * matches the value of the switch expression.\n *\n * Unlike JavaScript, which uses strict equality, Angular uses loose equality.\n * This means that the empty string, `\"\"` matches 0.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchDefault`\n *\n */\nclass NgSwitchCase {\n constructor(viewContainer, templateRef, ngSwitch) {\n this.ngSwitch = ngSwitch;\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchCase', 'NgSwitchCase');\n }\n ngSwitch._addCase();\n this._view = new SwitchView(viewContainer, templateRef);\n }\n /**\n * Performs case matching. For internal use only.\n */\n ngDoCheck() {\n this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase));\n }\n}\nNgSwitchCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchCase, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgSwitchCase, selector: \"[ngSwitchCase]\", inputs: { ngSwitchCase: \"ngSwitchCase\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchCase]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, propDecorators: { ngSwitchCase: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that is rendered when no `NgSwitchCase` expressions\n * match the `NgSwitch` expression.\n * This statement should be the final case in an `NgSwitch`.\n *\n * @publicApi\n * @see `NgSwitch`\n * @see `NgSwitchCase`\n *\n */\nclass NgSwitchDefault {\n constructor(viewContainer, templateRef, ngSwitch) {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && !ngSwitch) {\n throwNgSwitchProviderNotFoundError('ngSwitchDefault', 'NgSwitchDefault');\n }\n ngSwitch._addDefault(new SwitchView(viewContainer, templateRef));\n }\n}\nNgSwitchDefault.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchDefault, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }, { token: NgSwitch, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgSwitchDefault.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgSwitchDefault, selector: \"[ngSwitchDefault]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgSwitchDefault, decorators: [{\n type: Directive,\n args: [{ selector: '[ngSwitchDefault]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }, { type: NgSwitch, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; } });\nfunction throwNgSwitchProviderNotFoundError(attrName, directiveName) {\n throw new ɵRuntimeError(\"305\" /* TEMPLATE_STRUCTURE_ERROR */, `An element with the \"${attrName}\" attribute ` +\n `(matching the \"${directiveName}\" directive) must be located inside an element with the \"ngSwitch\" attribute ` +\n `(matching \"NgSwitch\" directive)`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n * ```\n * \n * there is nothing\n * there is one\n * there are a few\n * \n * ```\n *\n * @description\n *\n * Adds / removes DOM sub-trees based on a numeric value. Tailored for pluralization.\n *\n * Displays DOM sub-trees that match the switch expression value, or failing that, DOM sub-trees\n * that match the switch expression's pluralization category.\n *\n * To use this directive you must provide a container element that sets the `[ngPlural]` attribute\n * to a switch expression. Inner elements with a `[ngPluralCase]` will display based on their\n * expression:\n * - if `[ngPluralCase]` is set to a value starting with `=`, it will only display if the value\n * matches the switch expression exactly,\n * - otherwise, the view will be treated as a \"category match\", and will only display if exact\n * value matches aren't found and the value maps to its category for the defined locale.\n *\n * See http://cldr.unicode.org/index/cldr-spec/plural-rules\n *\n * @publicApi\n */\nclass NgPlural {\n constructor(_localization) {\n this._localization = _localization;\n this._caseViews = {};\n }\n set ngPlural(value) {\n this._switchValue = value;\n this._updateView();\n }\n addCase(value, switchView) {\n this._caseViews[value] = switchView;\n }\n _updateView() {\n this._clearViews();\n const cases = Object.keys(this._caseViews);\n const key = getPluralCategory(this._switchValue, cases, this._localization);\n this._activateView(this._caseViews[key]);\n }\n _clearViews() {\n if (this._activeView)\n this._activeView.destroy();\n }\n _activateView(view) {\n if (view) {\n this._activeView = view;\n this._activeView.create();\n }\n }\n}\nNgPlural.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPlural, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Directive });\nNgPlural.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgPlural, selector: \"[ngPlural]\", inputs: { ngPlural: \"ngPlural\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPlural, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPlural]' }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; }, propDecorators: { ngPlural: [{\n type: Input\n }] } });\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Creates a view that will be added/removed from the parent {@link NgPlural} when the\n * given expression matches the plural expression according to CLDR rules.\n *\n * @usageNotes\n * ```\n * \n * ...\n * ...\n * \n *```\n *\n * See {@link NgPlural} for more details and example.\n *\n * @publicApi\n */\nclass NgPluralCase {\n constructor(value, template, viewContainer, ngPlural) {\n this.value = value;\n const isANumber = !isNaN(Number(value));\n ngPlural.addCase(isANumber ? `=${value}` : value, new SwitchView(viewContainer, template));\n }\n}\nNgPluralCase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPluralCase, deps: [{ token: 'ngPluralCase', attribute: true }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: NgPlural, host: true }], target: i0.ɵɵFactoryTarget.Directive });\nNgPluralCase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgPluralCase, selector: \"[ngPluralCase]\", ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgPluralCase, decorators: [{\n type: Directive,\n args: [{ selector: '[ngPluralCase]' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Attribute,\n args: ['ngPluralCase']\n }] }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: NgPlural, decorators: [{\n type: Host\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @usageNotes\n *\n * Set the font of the containing element to the result of an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set the width of the containing element to a pixel value returned by an expression.\n *\n * ```\n * ...\n * ```\n *\n * Set a collection of style values using an expression that returns key-value pairs.\n *\n * ```\n * ...\n * ```\n *\n * @description\n *\n * An attribute directive that updates styles for the containing HTML element.\n * Sets one or more style properties, specified as colon-separated key-value pairs.\n * The key is a style name, with an optional `.` suffix\n * (such as 'top.px', 'font-style.em').\n * The value is an expression to be evaluated.\n * The resulting non-null value, expressed in the given unit,\n * is assigned to the given style property.\n * If the result of evaluation is null, the corresponding style is removed.\n *\n * @publicApi\n */\nclass NgStyle {\n constructor(_ngEl, _differs, _renderer) {\n this._ngEl = _ngEl;\n this._differs = _differs;\n this._renderer = _renderer;\n this._ngStyle = null;\n this._differ = null;\n }\n set ngStyle(values) {\n this._ngStyle = values;\n if (!this._differ && values) {\n this._differ = this._differs.find(values).create();\n }\n }\n ngDoCheck() {\n if (this._differ) {\n const changes = this._differ.diff(this._ngStyle);\n if (changes) {\n this._applyChanges(changes);\n }\n }\n }\n _setStyle(nameAndUnit, value) {\n const [name, unit] = nameAndUnit.split('.');\n value = value != null && unit ? `${value}${unit}` : value;\n if (value != null) {\n this._renderer.setStyle(this._ngEl.nativeElement, name, value);\n }\n else {\n this._renderer.removeStyle(this._ngEl.nativeElement, name);\n }\n }\n _applyChanges(changes) {\n changes.forEachRemovedItem((record) => this._setStyle(record.key, null));\n changes.forEachAddedItem((record) => this._setStyle(record.key, record.currentValue));\n changes.forEachChangedItem((record) => this._setStyle(record.key, record.currentValue));\n }\n}\nNgStyle.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgStyle, deps: [{ token: i0.ElementRef }, { token: i0.KeyValueDiffers }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\nNgStyle.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgStyle, selector: \"[ngStyle]\", inputs: { ngStyle: \"ngStyle\" }, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgStyle, decorators: [{\n type: Directive,\n args: [{ selector: '[ngStyle]' }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.KeyValueDiffers }, { type: i0.Renderer2 }]; }, propDecorators: { ngStyle: [{\n type: Input,\n args: ['ngStyle']\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n *\n * @description\n *\n * Inserts an embedded view from a prepared `TemplateRef`.\n *\n * You can attach a context object to the `EmbeddedViewRef` by setting `[ngTemplateOutletContext]`.\n * `[ngTemplateOutletContext]` should be an object, the object's keys will be available for binding\n * by the local template `let` declarations.\n *\n * @usageNotes\n * ```\n * \n * ```\n *\n * Using the key `$implicit` in the context object will set its value as default.\n *\n * ### Example\n *\n * {@example common/ngTemplateOutlet/ts/module.ts region='NgTemplateOutlet'}\n *\n * @publicApi\n */\nclass NgTemplateOutlet {\n constructor(_viewContainerRef) {\n this._viewContainerRef = _viewContainerRef;\n this._viewRef = null;\n /**\n * A context object to attach to the {@link EmbeddedViewRef}. This should be an\n * object, the object's keys will be available for binding by the local template `let`\n * declarations.\n * Using the key `$implicit` in the context object will set its value as default.\n */\n this.ngTemplateOutletContext = null;\n /**\n * A string defining the template reference and optionally the context object for the template.\n */\n this.ngTemplateOutlet = null;\n }\n ngOnChanges(changes) {\n if (changes['ngTemplateOutlet']) {\n const viewContainerRef = this._viewContainerRef;\n if (this._viewRef) {\n viewContainerRef.remove(viewContainerRef.indexOf(this._viewRef));\n }\n this._viewRef = this.ngTemplateOutlet ?\n viewContainerRef.createEmbeddedView(this.ngTemplateOutlet, this.ngTemplateOutletContext) :\n null;\n }\n else if (this._viewRef && changes['ngTemplateOutletContext'] && this.ngTemplateOutletContext) {\n this._viewRef.context = this.ngTemplateOutletContext;\n }\n }\n}\nNgTemplateOutlet.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgTemplateOutlet, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });\nNgTemplateOutlet.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.2\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: { ngTemplateOutletContext: \"ngTemplateOutletContext\", ngTemplateOutlet: \"ngTemplateOutlet\" }, usesOnChanges: true, ngImport: i0 });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NgTemplateOutlet, decorators: [{\n type: Directive,\n args: [{ selector: '[ngTemplateOutlet]' }]\n }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }]; }, propDecorators: { ngTemplateOutletContext: [{\n type: Input\n }], ngTemplateOutlet: [{\n type: Input\n }] } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular directives that are likely to be used in each and every Angular\n * application.\n */\nconst COMMON_DIRECTIVES = [\n NgClass,\n NgComponentOutlet,\n NgForOf,\n NgIf,\n NgTemplateOutlet,\n NgStyle,\n NgSwitch,\n NgSwitchCase,\n NgSwitchDefault,\n NgPlural,\n NgPluralCase,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction invalidPipeArgumentError(type, value) {\n return Error(`InvalidPipeArgument: '${value}' for pipe '${ɵstringify(type)}'`);\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nclass SubscribableStrategy {\n createSubscription(async, updateLatestValue) {\n return async.subscribe({\n next: updateLatestValue,\n error: (e) => {\n throw e;\n }\n });\n }\n dispose(subscription) {\n subscription.unsubscribe();\n }\n onDestroy(subscription) {\n subscription.unsubscribe();\n }\n}\nclass PromiseStrategy {\n createSubscription(async, updateLatestValue) {\n return async.then(updateLatestValue, e => {\n throw e;\n });\n }\n dispose(subscription) { }\n onDestroy(subscription) { }\n}\nconst _promiseStrategy = new PromiseStrategy();\nconst _subscribableStrategy = new SubscribableStrategy();\n/**\n * @ngModule CommonModule\n * @description\n *\n * Unwraps a value from an asynchronous primitive.\n *\n * The `async` pipe subscribes to an `Observable` or `Promise` and returns the latest value it has\n * emitted. When a new value is emitted, the `async` pipe marks the component to be checked for\n * changes. When the component gets destroyed, the `async` pipe unsubscribes automatically to avoid\n * potential memory leaks. When the reference of the expression changes, the `async` pipe\n * automatically unsubscribes from the old `Observable` or `Promise` and subscribes to the new one.\n *\n * @usageNotes\n *\n * ### Examples\n *\n * This example binds a `Promise` to the view. Clicking the `Resolve` button resolves the\n * promise.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipePromise'}\n *\n * It's also possible to use `async` with Observables. The example below binds the `time` Observable\n * to the view. The Observable continuously updates the view with the current time.\n *\n * {@example common/pipes/ts/async_pipe.ts region='AsyncPipeObservable'}\n *\n * @publicApi\n */\nclass AsyncPipe {\n constructor(_ref) {\n this._ref = _ref;\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n this._strategy = null;\n }\n ngOnDestroy() {\n if (this._subscription) {\n this._dispose();\n }\n }\n transform(obj) {\n if (!this._obj) {\n if (obj) {\n this._subscribe(obj);\n }\n return this._latestValue;\n }\n if (obj !== this._obj) {\n this._dispose();\n return this.transform(obj);\n }\n return this._latestValue;\n }\n _subscribe(obj) {\n this._obj = obj;\n this._strategy = this._selectStrategy(obj);\n this._subscription = this._strategy.createSubscription(obj, (value) => this._updateLatestValue(obj, value));\n }\n _selectStrategy(obj) {\n if (ɵisPromise(obj)) {\n return _promiseStrategy;\n }\n if (ɵisSubscribable(obj)) {\n return _subscribableStrategy;\n }\n throw invalidPipeArgumentError(AsyncPipe, obj);\n }\n _dispose() {\n this._strategy.dispose(this._subscription);\n this._latestValue = null;\n this._subscription = null;\n this._obj = null;\n }\n _updateLatestValue(async, value) {\n if (async === this._obj) {\n this._latestValue = value;\n this._ref.markForCheck();\n }\n }\n}\nAsyncPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: AsyncPipe, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe });\nAsyncPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: AsyncPipe, name: \"async\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: AsyncPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'async', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms text to all lower case.\n *\n * @see `UpperCasePipe`\n * @see `TitleCasePipe`\n * @usageNotes\n *\n * The following example defines a view that allows the user to enter\n * text, and then uses the pipe to convert the input text to all lower case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass LowerCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(LowerCasePipe, value);\n }\n return value.toLowerCase();\n }\n}\nLowerCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LowerCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nLowerCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LowerCasePipe, name: \"lowercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: LowerCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'lowercase' }]\n }] });\n//\n// Regex below matches any Unicode word and number compatible with ES5. In ES2018 the same result\n// can be achieved by using /[0-9\\p{L}]\\S*/gu and also known as Unicode Property Escapes\n// (https://2ality.com/2017/07/regexp-unicode-property-escapes.html). Since there is no\n// transpilation of this functionality down to ES5 without external tool, the only solution is\n// to use already transpiled form. Example can be found here -\n// https://mothereff.in/regexpu#input=var+regex+%3D+%2F%5B0-9%5Cp%7BL%7D%5D%5CS*%2Fgu%3B%0A%0A&unicodePropertyEscape=1\n//\nconst unicodeWordMatch = /(?:[0-9A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD50-\\uDD52\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E]|\\uD838[\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF38\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A])\\S*/g;\n/**\n * Transforms text to title case.\n * Capitalizes the first letter of each word and transforms the\n * rest of the word to lower case.\n * Words are delimited by any whitespace character, such as a space, tab, or line-feed character.\n *\n * @see `LowerCasePipe`\n * @see `UpperCasePipe`\n *\n * @usageNotes\n * The following example shows the result of transforming various strings into title case.\n *\n * \n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass TitleCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(TitleCasePipe, value);\n }\n return value.replace(unicodeWordMatch, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase()));\n }\n}\nTitleCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: TitleCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nTitleCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: TitleCasePipe, name: \"titlecase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: TitleCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'titlecase' }]\n }] });\n/**\n * Transforms text to all upper case.\n * @see `LowerCasePipe`\n * @see `TitleCasePipe`\n *\n * @ngModule CommonModule\n * @publicApi\n */\nclass UpperCasePipe {\n transform(value) {\n if (value == null)\n return null;\n if (typeof value !== 'string') {\n throw invalidPipeArgumentError(UpperCasePipe, value);\n }\n return value.toUpperCase();\n }\n}\nUpperCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: UpperCasePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nUpperCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: UpperCasePipe, name: \"uppercase\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: UpperCasePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'uppercase' }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Optionally-provided default timezone to use for all instances of `DatePipe` (such as `'+0430'`).\n * If the value isn't provided, the `DatePipe` will use the end-user's local system timezone.\n */\nconst DATE_PIPE_DEFAULT_TIMEZONE = new InjectionToken('DATE_PIPE_DEFAULT_TIMEZONE');\n// clang-format off\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a date value according to locale rules.\n *\n * `DatePipe` is executed only when it detects a pure change to the input value.\n * A pure change is either a change to a primitive input value\n * (such as `String`, `Number`, `Boolean`, or `Symbol`),\n * or a changed object reference (such as `Date`, `Array`, `Function`, or `Object`).\n *\n * Note that mutating a `Date` object does not cause the pipe to be rendered again.\n * To ensure that the pipe is executed, you must create a new `Date` object.\n *\n * Only the `en-US` locale data comes with Angular. To localize dates\n * in another language, you must import the corresponding locale data.\n * See the [I18n guide](guide/i18n-common-format-data-locale) for more information.\n *\n * The time zone of the formatted value can be specified either by passing it in as the second\n * parameter of the pipe, or by setting the default through the `DATE_PIPE_DEFAULT_TIMEZONE`\n * injection token. The value that is passed in as the second parameter takes precedence over\n * the one defined using the injection token.\n *\n * @see `formatDate()`\n *\n *\n * @usageNotes\n *\n * The result of this pipe is not reevaluated when the input is mutated. To avoid the need to\n * reformat the date on every change-detection cycle, treat the date as an immutable object\n * and change the reference when the pipe needs to run again.\n *\n * ### Pre-defined format options\n *\n * | Option | Equivalent to | Examples (given in `en-US` locale) |\n * |---------------|-------------------------------------|-------------------------------------------------|\n * | `'short'` | `'M/d/yy, h:mm a'` | `6/15/15, 9:03 AM` |\n * | `'medium'` | `'MMM d, y, h:mm:ss a'` | `Jun 15, 2015, 9:03:01 AM` |\n * | `'long'` | `'MMMM d, y, h:mm:ss a z'` | `June 15, 2015 at 9:03:01 AM GMT+1` |\n * | `'full'` | `'EEEE, MMMM d, y, h:mm:ss a zzzz'` | `Monday, June 15, 2015 at 9:03:01 AM GMT+01:00` |\n * | `'shortDate'` | `'M/d/yy'` | `6/15/15` |\n * | `'mediumDate'`| `'MMM d, y'` | `Jun 15, 2015` |\n * | `'longDate'` | `'MMMM d, y'` | `June 15, 2015` |\n * | `'fullDate'` | `'EEEE, MMMM d, y'` | `Monday, June 15, 2015` |\n * | `'shortTime'` | `'h:mm a'` | `9:03 AM` |\n * | `'mediumTime'`| `'h:mm:ss a'` | `9:03:01 AM` |\n * | `'longTime'` | `'h:mm:ss a z'` | `9:03:01 AM GMT+1` |\n * | `'fullTime'` | `'h:mm:ss a zzzz'` | `9:03:01 AM GMT+01:00` |\n *\n * ### Custom format options\n *\n * You can construct a format string using symbols to specify the components\n * of a date-time value, as described in the following table.\n * Format details depend on the locale.\n * Fields marked with (*) are only available in the extra data set for the given locale.\n *\n * | Field type | Format | Description | Example Value |\n * |-------------------- |-------------|---------------------------------------------------------------|------------------------------------------------------------|\n * | Era | G, GG & GGG | Abbreviated | AD |\n * | | GGGG | Wide | Anno Domini |\n * | | GGGGG | Narrow | A |\n * | Year | y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | yy | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | yyy | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | yyyy | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Week-numbering year | Y | Numeric: minimum digits | 2, 20, 201, 2017, 20173 |\n * | | YY | Numeric: 2 digits + zero padded | 02, 20, 01, 17, 73 |\n * | | YYY | Numeric: 3 digits + zero padded | 002, 020, 201, 2017, 20173 |\n * | | YYYY | Numeric: 4 digits or more + zero padded | 0002, 0020, 0201, 2017, 20173 |\n * | Month | M | Numeric: 1 digit | 9, 12 |\n * | | MM | Numeric: 2 digits + zero padded | 09, 12 |\n * | | MMM | Abbreviated | Sep |\n * | | MMMM | Wide | September |\n * | | MMMMM | Narrow | S |\n * | Month standalone | L | Numeric: 1 digit | 9, 12 |\n * | | LL | Numeric: 2 digits + zero padded | 09, 12 |\n * | | LLL | Abbreviated | Sep |\n * | | LLLL | Wide | September |\n * | | LLLLL | Narrow | S |\n * | Week of year | w | Numeric: minimum digits | 1... 53 |\n * | | ww | Numeric: 2 digits + zero padded | 01... 53 |\n * | Week of month | W | Numeric: 1 digit | 1... 5 |\n * | Day of month | d | Numeric: minimum digits | 1 |\n * | | dd | Numeric: 2 digits + zero padded | 01 |\n * | Week day | E, EE & EEE | Abbreviated | Tue |\n * | | EEEE | Wide | Tuesday |\n * | | EEEEE | Narrow | T |\n * | | EEEEEE | Short | Tu |\n * | Week day standalone | c, cc | Numeric: 1 digit | 2 |\n * | | ccc | Abbreviated | Tue |\n * | | cccc | Wide | Tuesday |\n * | | ccccc | Narrow | T |\n * | | cccccc | Short | Tu |\n * | Period | a, aa & aaa | Abbreviated | am/pm or AM/PM |\n * | | aaaa | Wide (fallback to `a` when missing) | ante meridiem/post meridiem |\n * | | aaaaa | Narrow | a/p |\n * | Period* | B, BB & BBB | Abbreviated | mid. |\n * | | BBBB | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | BBBBB | Narrow | md |\n * | Period standalone* | b, bb & bbb | Abbreviated | mid. |\n * | | bbbb | Wide | am, pm, midnight, noon, morning, afternoon, evening, night |\n * | | bbbbb | Narrow | md |\n * | Hour 1-12 | h | Numeric: minimum digits | 1, 12 |\n * | | hh | Numeric: 2 digits + zero padded | 01, 12 |\n * | Hour 0-23 | H | Numeric: minimum digits | 0, 23 |\n * | | HH | Numeric: 2 digits + zero padded | 00, 23 |\n * | Minute | m | Numeric: minimum digits | 8, 59 |\n * | | mm | Numeric: 2 digits + zero padded | 08, 59 |\n * | Second | s | Numeric: minimum digits | 0... 59 |\n * | | ss | Numeric: 2 digits + zero padded | 00... 59 |\n * | Fractional seconds | S | Numeric: 1 digit | 0... 9 |\n * | | SS | Numeric: 2 digits + zero padded | 00... 99 |\n * | | SSS | Numeric: 3 digits + zero padded (= milliseconds) | 000... 999 |\n * | Zone | z, zz & zzz | Short specific non location format (fallback to O) | GMT-8 |\n * | | zzzz | Long specific non location format (fallback to OOOO) | GMT-08:00 |\n * | | Z, ZZ & ZZZ | ISO8601 basic format | -0800 |\n * | | ZZZZ | Long localized GMT format | GMT-8:00 |\n * | | ZZZZZ | ISO8601 extended format + Z indicator for offset 0 (= XXXXX) | -08:00 |\n * | | O, OO & OOO | Short localized GMT format | GMT-8 |\n * | | OOOO | Long localized GMT format | GMT-08:00 |\n *\n *\n * ### Format examples\n *\n * These examples transform a date into various formats,\n * assuming that `dateObj` is a JavaScript `Date` object for\n * year: 2015, month: 6, day: 15, hour: 21, minute: 43, second: 11,\n * given in the local time for the `en-US` locale.\n *\n * ```\n * {{ dateObj | date }} // output is 'Jun 15, 2015'\n * {{ dateObj | date:'medium' }} // output is 'Jun 15, 2015, 9:43:11 PM'\n * {{ dateObj | date:'shortTime' }} // output is '9:43 PM'\n * {{ dateObj | date:'mm:ss' }} // output is '43:11'\n * ```\n *\n * ### Usage example\n *\n * The following component uses a date pipe to display the current date in different formats.\n *\n * ```\n * @Component({\n * selector: 'date-pipe',\n * template: `
    \n *

    Today is {{today | date}}

    \n *

    Or if you prefer, {{today | date:'fullDate'}}

    \n *

    The time is {{today | date:'h:mm a z'}}

    \n *
    `\n * })\n * // Get the current date and time as a date-time value.\n * export class DatePipeComponent {\n * today: number = Date.now();\n * }\n * ```\n *\n * @publicApi\n */\n// clang-format on\nclass DatePipe {\n constructor(locale, defaultTimezone) {\n this.locale = locale;\n this.defaultTimezone = defaultTimezone;\n }\n transform(value, format = 'mediumDate', timezone, locale) {\n if (value == null || value === '' || value !== value)\n return null;\n try {\n return formatDate(value, format, locale || this.locale, timezone ?? this.defaultTimezone ?? undefined);\n }\n catch (error) {\n throw invalidPipeArgumentError(DatePipe, error.message);\n }\n }\n}\nDatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DatePipe, deps: [{ token: LOCALE_ID }, { token: DATE_PIPE_DEFAULT_TIMEZONE, optional: true }], target: i0.ɵɵFactoryTarget.Pipe });\nDatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DatePipe, name: \"date\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DatePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'date', pure: true }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DATE_PIPE_DEFAULT_TIMEZONE]\n }, {\n type: Optional\n }] }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst _INTERPOLATION_REGEXP = /#/g;\n/**\n * @ngModule CommonModule\n * @description\n *\n * Maps a value to a string that pluralizes the value according to locale rules.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nPluralPipeComponent'}\n *\n * @publicApi\n */\nclass I18nPluralPipe {\n constructor(_localization) {\n this._localization = _localization;\n }\n /**\n * @param value the number to be formatted\n * @param pluralMap an object that mimics the ICU format, see\n * http://userguide.icu-project.org/formatparse/messages.\n * @param locale a `string` defining the locale to use (uses the current {@link LOCALE_ID} by\n * default).\n */\n transform(value, pluralMap, locale) {\n if (value == null)\n return '';\n if (typeof pluralMap !== 'object' || pluralMap === null) {\n throw invalidPipeArgumentError(I18nPluralPipe, pluralMap);\n }\n const key = getPluralCategory(value, Object.keys(pluralMap), this._localization, locale);\n return pluralMap[key].replace(_INTERPOLATION_REGEXP, value.toString());\n }\n}\nI18nPluralPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nPluralPipe, deps: [{ token: NgLocalization }], target: i0.ɵɵFactoryTarget.Pipe });\nI18nPluralPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nPluralPipe, name: \"i18nPlural\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nPluralPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nPlural', pure: true }]\n }], ctorParameters: function () { return [{ type: NgLocalization }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Generic selector that displays the string that matches the current value.\n *\n * If none of the keys of the `mapping` match the `value`, then the content\n * of the `other` key is returned when present, otherwise an empty string is returned.\n *\n * @usageNotes\n *\n * ### Example\n *\n * {@example common/pipes/ts/i18n_pipe.ts region='I18nSelectPipeComponent'}\n *\n * @publicApi\n */\nclass I18nSelectPipe {\n /**\n * @param value a string to be internationalized.\n * @param mapping an object that indicates the text that should be displayed\n * for different values of the provided `value`.\n */\n transform(value, mapping) {\n if (value == null)\n return '';\n if (typeof mapping !== 'object' || typeof value !== 'string') {\n throw invalidPipeArgumentError(I18nSelectPipe, mapping);\n }\n if (mapping.hasOwnProperty(value)) {\n return mapping[value];\n }\n if (mapping.hasOwnProperty('other')) {\n return mapping['other'];\n }\n return '';\n }\n}\nI18nSelectPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nSelectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nI18nSelectPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nSelectPipe, name: \"i18nSelect\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: I18nSelectPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'i18nSelect', pure: true }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Converts a value into its JSON-format representation. Useful for debugging.\n *\n * @usageNotes\n *\n * The following component uses a JSON pipe to convert an object\n * to JSON format, and displays the string in both formats for comparison.\n *\n * {@example common/pipes/ts/json_pipe.ts region='JsonPipe'}\n *\n * @publicApi\n */\nclass JsonPipe {\n /**\n * @param value A value of any type to convert into a JSON-format string.\n */\n transform(value) {\n return JSON.stringify(value, null, 2);\n }\n}\nJsonPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: JsonPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nJsonPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: JsonPipe, name: \"json\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: JsonPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'json', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nfunction makeKeyValuePair(key, value) {\n return { key: key, value: value };\n}\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms Object or Map into an array of key value pairs.\n *\n * The output array will be ordered by keys.\n * By default the comparator will be by Unicode point value.\n * You can optionally pass a compareFn if your keys are complex types.\n *\n * @usageNotes\n * ### Examples\n *\n * This examples show how an Object or a Map can be iterated by ngFor with the use of this\n * keyvalue pipe.\n *\n * {@example common/pipes/ts/keyvalue_pipe.ts region='KeyValuePipe'}\n *\n * @publicApi\n */\nclass KeyValuePipe {\n constructor(differs) {\n this.differs = differs;\n this.keyValues = [];\n this.compareFn = defaultComparator;\n }\n transform(input, compareFn = defaultComparator) {\n if (!input || (!(input instanceof Map) && typeof input !== 'object')) {\n return null;\n }\n if (!this.differ) {\n // make a differ for whatever type we've been passed in\n this.differ = this.differs.find(input).create();\n }\n const differChanges = this.differ.diff(input);\n const compareFnChanged = compareFn !== this.compareFn;\n if (differChanges) {\n this.keyValues = [];\n differChanges.forEachItem((r) => {\n this.keyValues.push(makeKeyValuePair(r.key, r.currentValue));\n });\n }\n if (differChanges || compareFnChanged) {\n this.keyValues.sort(compareFn);\n this.compareFn = compareFn;\n }\n return this.keyValues;\n }\n}\nKeyValuePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: KeyValuePipe, deps: [{ token: i0.KeyValueDiffers }], target: i0.ɵɵFactoryTarget.Pipe });\nKeyValuePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: KeyValuePipe, name: \"keyvalue\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: KeyValuePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'keyvalue', pure: false }]\n }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }]; } });\nfunction defaultComparator(keyValueA, keyValueB) {\n const a = keyValueA.key;\n const b = keyValueB.key;\n // if same exit with 0;\n if (a === b)\n return 0;\n // make sure that undefined are at the end of the sort.\n if (a === undefined)\n return 1;\n if (b === undefined)\n return -1;\n // make sure that nulls are at the end of the sort.\n if (a === null)\n return 1;\n if (b === null)\n return -1;\n if (typeof a == 'string' && typeof b == 'string') {\n return a < b ? -1 : 1;\n }\n if (typeof a == 'number' && typeof b == 'number') {\n return a - b;\n }\n if (typeof a == 'boolean' && typeof b == 'boolean') {\n return a < b ? -1 : 1;\n }\n // `a` and `b` are of different types. Compare their string values.\n const aString = String(a);\n const bString = String(b);\n return aString == bString ? 0 : aString < bString ? -1 : 1;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Formats a value according to digit options and locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * @see `formatNumber()`\n *\n * @usageNotes\n *\n * ### digitsInfo\n *\n * The value's decimal representation is specified by the `digitsInfo`\n * parameter, written in the following format:
    \n *\n * ```\n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}\n * ```\n *\n * - `minIntegerDigits`:\n * The minimum number of integer digits before the decimal point.\n * Default is 1.\n *\n * - `minFractionDigits`:\n * The minimum number of digits after the decimal point.\n * Default is 0.\n *\n * - `maxFractionDigits`:\n * The maximum number of digits after the decimal point.\n * Default is 3.\n *\n * If the formatted value is truncated it will be rounded using the \"to-nearest\" method:\n *\n * ```\n * {{3.6 | number: '1.0-0'}}\n * \n *\n * {{-3.6 | number:'1.0-0'}}\n * \n * ```\n *\n * ### locale\n *\n * `locale` will format a value according to locale rules.\n * Locale determines group sizing and separator,\n * decimal point character, and other locale-specific configurations.\n *\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n *\n * See [Setting your app locale](guide/i18n-common-locale-id).\n *\n * ### Example\n *\n * The following code shows how the pipe transforms values\n * according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass DecimalPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n * @param value The value to be formatted.\n * @param digitsInfo Sets digit and decimal representation.\n * [See more](#digitsinfo).\n * @param locale Specifies what locale format rules to use.\n * [See more](#locale).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatNumber(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(DecimalPipe, error.message);\n }\n }\n}\nDecimalPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DecimalPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nDecimalPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DecimalPipe, name: \"number\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: DecimalPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'number' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a percentage\n * string, formatted according to locale rules that determine group sizing and\n * separator, decimal-point character, and other locale-specific\n * configurations.\n *\n * @see `formatPercent()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass PercentPipe {\n constructor(_locale) {\n this._locale = _locale;\n }\n /**\n *\n * @param value The number to be formatted as a percentage.\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `0`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `0`.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n try {\n const num = strToNumber(value);\n return formatPercent(num, locale, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(PercentPipe, error.message);\n }\n }\n}\nPercentPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PercentPipe, deps: [{ token: LOCALE_ID }], target: i0.ɵɵFactoryTarget.Pipe });\nPercentPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PercentPipe, name: \"percent\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: PercentPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'percent' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; } });\n/**\n * @ngModule CommonModule\n * @description\n *\n * Transforms a number to a currency string, formatted according to locale rules\n * that determine group sizing and separator, decimal-point character,\n * and other locale-specific configurations.\n *\n * {@a currency-code-deprecation}\n *
    \n *\n * **Deprecation notice:**\n *\n * The default currency code is currently always `USD` but this is deprecated from v9.\n *\n * **In v11 the default currency code will be taken from the current locale identified by\n * the `LOCALE_ID` token. See the [i18n guide](guide/i18n-common-locale-id) for\n * more information.**\n *\n * If you need the previous behavior then set it by creating a `DEFAULT_CURRENCY_CODE` provider in\n * your application `NgModule`:\n *\n * ```ts\n * {provide: DEFAULT_CURRENCY_CODE, useValue: 'USD'}\n * ```\n *\n *
    \n *\n * @see `getCurrencySymbol()`\n * @see `formatCurrency()`\n *\n * @usageNotes\n * The following code shows how the pipe transforms numbers\n * into text strings, according to various format specifications,\n * where the caller's default locale is `en-US`.\n *\n * \n *\n * @publicApi\n */\nclass CurrencyPipe {\n constructor(_locale, _defaultCurrencyCode = 'USD') {\n this._locale = _locale;\n this._defaultCurrencyCode = _defaultCurrencyCode;\n }\n /**\n *\n * @param value The number to be formatted as currency.\n * @param currencyCode The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code,\n * such as `USD` for the US dollar and `EUR` for the euro. The default currency code can be\n * configured using the `DEFAULT_CURRENCY_CODE` injection token.\n * @param display The format for the currency indicator. One of the following:\n * - `code`: Show the code (such as `USD`).\n * - `symbol`(default): Show the symbol (such as `$`).\n * - `symbol-narrow`: Use the narrow symbol for locales that have two symbols for their\n * currency.\n * For example, the Canadian dollar CAD has the symbol `CA$` and the symbol-narrow `$`. If the\n * locale has no narrow symbol, uses the standard symbol for the locale.\n * - String: Use the given string value instead of a code or a symbol.\n * For example, an empty string will suppress the currency & symbol.\n * - Boolean (marked deprecated in v5): `true` for symbol and false for `code`.\n *\n * @param digitsInfo Decimal representation options, specified by a string\n * in the following format:
    \n * {minIntegerDigits}.{minFractionDigits}-{maxFractionDigits}.\n * - `minIntegerDigits`: The minimum number of integer digits before the decimal point.\n * Default is `1`.\n * - `minFractionDigits`: The minimum number of digits after the decimal point.\n * Default is `2`.\n * - `maxFractionDigits`: The maximum number of digits after the decimal point.\n * Default is `2`.\n * If not provided, the number will be formatted with the proper amount of digits,\n * depending on what the [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) specifies.\n * For example, the Canadian dollar has 2 digits, whereas the Chilean peso has none.\n * @param locale A locale code for the locale format rules to use.\n * When not supplied, uses the value of `LOCALE_ID`, which is `en-US` by default.\n * See [Setting your app locale](guide/i18n-common-locale-id).\n */\n transform(value, currencyCode = this._defaultCurrencyCode, display = 'symbol', digitsInfo, locale) {\n if (!isValue(value))\n return null;\n locale = locale || this._locale;\n if (typeof display === 'boolean') {\n if ((typeof ngDevMode === 'undefined' || ngDevMode) && console && console.warn) {\n console.warn(`Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are \"code\", \"symbol\" or \"symbol-narrow\".`);\n }\n display = display ? 'symbol' : 'code';\n }\n let currency = currencyCode || this._defaultCurrencyCode;\n if (display !== 'code') {\n if (display === 'symbol' || display === 'symbol-narrow') {\n currency = getCurrencySymbol(currency, display === 'symbol' ? 'wide' : 'narrow', locale);\n }\n else {\n currency = display;\n }\n }\n try {\n const num = strToNumber(value);\n return formatCurrency(num, locale, currency, currencyCode, digitsInfo);\n }\n catch (error) {\n throw invalidPipeArgumentError(CurrencyPipe, error.message);\n }\n }\n}\nCurrencyPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CurrencyPipe, deps: [{ token: LOCALE_ID }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Pipe });\nCurrencyPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CurrencyPipe, name: \"currency\" });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CurrencyPipe, decorators: [{\n type: Pipe,\n args: [{ name: 'currency' }]\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DEFAULT_CURRENCY_CODE]\n }] }]; } });\nfunction isValue(value) {\n return !(value == null || value === '' || value !== value);\n}\n/**\n * Transforms a string into a number (if needed).\n */\nfunction strToNumber(value) {\n // Convert strings to numbers\n if (typeof value === 'string' && !isNaN(Number(value) - parseFloat(value))) {\n return Number(value);\n }\n if (typeof value !== 'number') {\n throw new Error(`${value} is not a number`);\n }\n return value;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @ngModule CommonModule\n * @description\n *\n * Creates a new `Array` or `String` containing a subset (slice) of the elements.\n *\n * @usageNotes\n *\n * All behavior is based on the expected behavior of the JavaScript API `Array.prototype.slice()`\n * and `String.prototype.slice()`.\n *\n * When operating on an `Array`, the returned `Array` is always a copy even when all\n * the elements are being returned.\n *\n * When operating on a blank value, the pipe returns the blank value.\n *\n * ### List Example\n *\n * This `ngFor` example:\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_list'}\n *\n * produces the following:\n *\n * ```html\n *
  • b
  • \n *
  • c
  • \n * ```\n *\n * ### String Examples\n *\n * {@example common/pipes/ts/slice_pipe.ts region='SlicePipe_string'}\n *\n * @publicApi\n */\nclass SlicePipe {\n transform(value, start, end) {\n if (value == null)\n return null;\n if (!this.supports(value)) {\n throw invalidPipeArgumentError(SlicePipe, value);\n }\n return value.slice(start, end);\n }\n supports(obj) {\n return typeof obj === 'string' || Array.isArray(obj);\n }\n}\nSlicePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: SlicePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });\nSlicePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: SlicePipe, name: \"slice\", pure: false });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: SlicePipe, decorators: [{\n type: Pipe,\n args: [{ name: 'slice', pure: false }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A collection of Angular pipes that are likely to be used in each and every application.\n */\nconst COMMON_PIPES = [\n AsyncPipe,\n UpperCasePipe,\n LowerCasePipe,\n JsonPipe,\n SlicePipe,\n DecimalPipe,\n PercentPipe,\n TitleCasePipe,\n CurrencyPipe,\n DatePipe,\n I18nPluralPipe,\n I18nSelectPipe,\n KeyValuePipe,\n];\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Note: This does not contain the location providers,\n// as they need some platform specific implementations to work.\n/**\n * Exports all the basic Angular directives and pipes,\n * such as `NgIf`, `NgForOf`, `DecimalPipe`, and so on.\n * Re-exported by `BrowserModule`, which is included automatically in the root\n * `AppModule` when you create a new app with the CLI `new` command.\n *\n * * The `providers` options configure the NgModule's injector to provide\n * localization dependencies to members.\n * * The `exports` options make the declared directives and pipes available for import\n * by other NgModules.\n *\n * @publicApi\n */\nclass CommonModule {\n}\nCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, declarations: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe], exports: [NgClass, NgComponentOutlet, NgForOf, NgIf, NgTemplateOutlet, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgPlural, NgPluralCase, AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe] });\nCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: CommonModule, decorators: [{\n type: NgModule,\n args: [{\n declarations: [COMMON_DIRECTIVES, COMMON_PIPES],\n exports: [COMMON_DIRECTIVES, COMMON_PIPES],\n providers: [\n { provide: NgLocalization, useClass: NgLocaleLocalization },\n ],\n }]\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nconst PLATFORM_BROWSER_ID = 'browser';\nconst PLATFORM_SERVER_ID = 'server';\nconst PLATFORM_WORKER_APP_ID = 'browserWorkerApp';\nconst PLATFORM_WORKER_UI_ID = 'browserWorkerUi';\n/**\n * Returns whether a platform id represents a browser platform.\n * @publicApi\n */\nfunction isPlatformBrowser(platformId) {\n return platformId === PLATFORM_BROWSER_ID;\n}\n/**\n * Returns whether a platform id represents a server platform.\n * @publicApi\n */\nfunction isPlatformServer(platformId) {\n return platformId === PLATFORM_SERVER_ID;\n}\n/**\n * Returns whether a platform id represents a web worker app platform.\n * @publicApi\n */\nfunction isPlatformWorkerApp(platformId) {\n return platformId === PLATFORM_WORKER_APP_ID;\n}\n/**\n * Returns whether a platform id represents a web worker UI platform.\n * @publicApi\n */\nfunction isPlatformWorkerUi(platformId) {\n return platformId === PLATFORM_WORKER_UI_ID;\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * @publicApi\n */\nconst VERSION = new Version('13.0.2');\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Defines a scroll position manager. Implemented by `BrowserViewportScroller`.\n *\n * @publicApi\n */\nclass ViewportScroller {\n}\n// De-sugared tree-shakable injection\n// See #23917\n/** @nocollapse */\nViewportScroller.ɵprov = ɵɵdefineInjectable({\n token: ViewportScroller,\n providedIn: 'root',\n factory: () => new BrowserViewportScroller(ɵɵinject(DOCUMENT), window)\n});\n/**\n * Manages the scroll position for a browser window.\n */\nclass BrowserViewportScroller {\n constructor(document, window) {\n this.document = document;\n this.window = window;\n this.offset = () => [0, 0];\n }\n /**\n * Configures the top offset used when scrolling to an anchor.\n * @param offset A position in screen coordinates (a tuple with x and y values)\n * or a function that returns the top offset position.\n *\n */\n setOffset(offset) {\n if (Array.isArray(offset)) {\n this.offset = () => offset;\n }\n else {\n this.offset = offset;\n }\n }\n /**\n * Retrieves the current scroll position.\n * @returns The position in screen coordinates.\n */\n getScrollPosition() {\n if (this.supportsScrolling()) {\n return [this.window.pageXOffset, this.window.pageYOffset];\n }\n else {\n return [0, 0];\n }\n }\n /**\n * Sets the scroll position.\n * @param position The new position in screen coordinates.\n */\n scrollToPosition(position) {\n if (this.supportsScrolling()) {\n this.window.scrollTo(position[0], position[1]);\n }\n }\n /**\n * Scrolls to an element and attempts to focus the element.\n *\n * Note that the function name here is misleading in that the target string may be an ID for a\n * non-anchor element.\n *\n * @param target The ID of an element or name of the anchor.\n *\n * @see https://html.spec.whatwg.org/#the-indicated-part-of-the-document\n * @see https://html.spec.whatwg.org/#scroll-to-fragid\n */\n scrollToAnchor(target) {\n if (!this.supportsScrolling()) {\n return;\n }\n const elSelected = findAnchorFromDocument(this.document, target);\n if (elSelected) {\n this.scrollToElement(elSelected);\n // After scrolling to the element, the spec dictates that we follow the focus steps for the\n // target. Rather than following the robust steps, simply attempt focus.\n this.attemptFocus(elSelected);\n }\n }\n /**\n * Disables automatic scroll restoration provided by the browser.\n */\n setHistoryScrollRestoration(scrollRestoration) {\n if (this.supportScrollRestoration()) {\n const history = this.window.history;\n if (history && history.scrollRestoration) {\n history.scrollRestoration = scrollRestoration;\n }\n }\n }\n /**\n * Scrolls to an element using the native offset and the specified offset set on this scroller.\n *\n * The offset can be used when we know that there is a floating header and scrolling naively to an\n * element (ex: `scrollIntoView`) leaves the element hidden behind the floating header.\n */\n scrollToElement(el) {\n const rect = el.getBoundingClientRect();\n const left = rect.left + this.window.pageXOffset;\n const top = rect.top + this.window.pageYOffset;\n const offset = this.offset();\n this.window.scrollTo(left - offset[0], top - offset[1]);\n }\n /**\n * Calls `focus` on the `focusTarget` and returns `true` if the element was focused successfully.\n *\n * If `false`, further steps may be necessary to determine a valid substitute to be focused\n * instead.\n *\n * @see https://html.spec.whatwg.org/#get-the-focusable-area\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLOrForeignElement/focus\n * @see https://html.spec.whatwg.org/#focusable-area\n */\n attemptFocus(focusTarget) {\n focusTarget.focus();\n return this.document.activeElement === focusTarget;\n }\n /**\n * We only support scroll restoration when we can get a hold of window.\n * This means that we do not support this behavior when running in a web worker.\n *\n * Lifting this restriction right now would require more changes in the dom adapter.\n * Since webworkers aren't widely used, we will lift it once RouterScroller is\n * battle-tested.\n */\n supportScrollRestoration() {\n try {\n if (!this.supportsScrolling()) {\n return false;\n }\n // The `scrollRestoration` property could be on the `history` instance or its prototype.\n const scrollRestorationDescriptor = getScrollRestorationProperty(this.window.history) ||\n getScrollRestorationProperty(Object.getPrototypeOf(this.window.history));\n // We can write to the `scrollRestoration` property if it is a writable data field or it has a\n // setter function.\n return !!scrollRestorationDescriptor &&\n !!(scrollRestorationDescriptor.writable || scrollRestorationDescriptor.set);\n }\n catch {\n return false;\n }\n }\n supportsScrolling() {\n try {\n return !!this.window && !!this.window.scrollTo && 'pageXOffset' in this.window;\n }\n catch {\n return false;\n }\n }\n}\nfunction getScrollRestorationProperty(obj) {\n return Object.getOwnPropertyDescriptor(obj, 'scrollRestoration');\n}\nfunction findAnchorFromDocument(document, target) {\n const documentResult = document.getElementById(target) || document.getElementsByName(target)[0];\n if (documentResult) {\n return documentResult;\n }\n // `getElementById` and `getElementsByName` won't pierce through the shadow DOM so we\n // have to traverse the DOM manually and do the lookup through the shadow roots.\n if (typeof document.createTreeWalker === 'function' && document.body &&\n (document.body.createShadowRoot || document.body.attachShadow)) {\n const treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);\n let currentNode = treeWalker.currentNode;\n while (currentNode) {\n const shadowRoot = currentNode.shadowRoot;\n if (shadowRoot) {\n // Note that `ShadowRoot` doesn't support `getElementsByName`\n // so we have to fall back to `querySelector`.\n const result = shadowRoot.getElementById(target) || shadowRoot.querySelector(`[name=\"${target}\"]`);\n if (result) {\n return result;\n }\n }\n currentNode = treeWalker.nextNode();\n }\n }\n return null;\n}\n/**\n * Provides an empty implementation of the viewport scroller.\n */\nclass NullViewportScroller {\n /**\n * Empty implementation\n */\n setOffset(offset) { }\n /**\n * Empty implementation\n */\n getScrollPosition() {\n return [0, 0];\n }\n /**\n * Empty implementation\n */\n scrollToPosition(position) { }\n /**\n * Empty implementation\n */\n scrollToAnchor(anchor) { }\n /**\n * Empty implementation\n */\n setHistoryScrollRestoration(scrollRestoration) { }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A wrapper around the `XMLHttpRequest` constructor.\n *\n * @publicApi\n */\nclass XhrFactory {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// This file only reexports content of the `src` folder. Keep it that way.\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { APP_BASE_HREF, AsyncPipe, CommonModule, CurrencyPipe, DATE_PIPE_DEFAULT_TIMEZONE, DOCUMENT, DatePipe, DecimalPipe, FormStyle, FormatWidth, HashLocationStrategy, I18nPluralPipe, I18nSelectPipe, JsonPipe, KeyValuePipe, LOCATION_INITIALIZED, Location, LocationStrategy, LowerCasePipe, NgClass, NgComponentOutlet, NgForOf, NgForOfContext, NgIf, NgIfContext, NgLocaleLocalization, NgLocalization, NgPlural, NgPluralCase, NgStyle, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet, NumberFormatStyle, NumberSymbol, PathLocationStrategy, PercentPipe, PlatformLocation, Plural, SlicePipe, TitleCasePipe, TranslationWidth, UpperCasePipe, VERSION, ViewportScroller, WeekDay, XhrFactory, formatCurrency, formatDate, formatNumber, formatPercent, getCurrencySymbol, getLocaleCurrencyCode, getLocaleCurrencyName, getLocaleCurrencySymbol, getLocaleDateFormat, getLocaleDateTimeFormat, getLocaleDayNames, getLocaleDayPeriods, getLocaleDirection, getLocaleEraNames, getLocaleExtraDayPeriodRules, getLocaleExtraDayPeriods, getLocaleFirstDayOfWeek, getLocaleId, getLocaleMonthNames, getLocaleNumberFormat, getLocaleNumberSymbol, getLocalePluralCase, getLocaleTimeFormat, getLocaleWeekEndRange, getNumberOfCurrencyDigits, isPlatformBrowser, isPlatformServer, isPlatformWorkerApp, isPlatformWorkerUi, registerLocaleData, BrowserPlatformLocation as ɵBrowserPlatformLocation, DomAdapter as ɵDomAdapter, NullViewportScroller as ɵNullViewportScroller, PLATFORM_BROWSER_ID as ɵPLATFORM_BROWSER_ID, PLATFORM_SERVER_ID as ɵPLATFORM_SERVER_ID, PLATFORM_WORKER_APP_ID as ɵPLATFORM_WORKER_APP_ID, PLATFORM_WORKER_UI_ID as ɵPLATFORM_WORKER_UI_ID, getDOM as ɵgetDOM, parseCookieValue as ɵparseCookieValue, setRootDomAdapter as ɵsetRootDomAdapter };\n","/**\n * @license Angular v13.0.2\n * (c) 2010-2021 Google LLC. https://angular.io/\n * License: MIT\n */\n\nimport * as i1 from '@angular/common';\nimport { DOCUMENT, ɵparseCookieValue, XhrFactory as XhrFactory$1 } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, InjectionToken, Inject, PLATFORM_ID, NgModule } from '@angular/core';\nimport { of, Observable } from 'rxjs';\nimport { concatMap, filter, map } from 'rxjs/operators';\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Transforms an `HttpRequest` into a stream of `HttpEvent`s, one of which will likely be a\n * `HttpResponse`.\n *\n * `HttpHandler` is injectable. When injected, the handler instance dispatches requests to the\n * first interceptor in the chain, which dispatches to the second, etc, eventually reaching the\n * `HttpBackend`.\n *\n * In an `HttpInterceptor`, the `HttpHandler` parameter is the next interceptor in the chain.\n *\n * @publicApi\n */\nclass HttpHandler {\n}\n/**\n * A final `HttpHandler` which will dispatch the request via browser HTTP APIs to a backend.\n *\n * Interceptors sit between the `HttpClient` interface and the `HttpBackend`.\n *\n * When injected, `HttpBackend` dispatches requests directly to the backend, without going\n * through the interceptor chain.\n *\n * @publicApi\n */\nclass HttpBackend {\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Represents the header configuration options for an HTTP request.\n * Instances are immutable. Modifying methods return a cloned\n * instance with the change. The original object is never changed.\n *\n * @publicApi\n */\nclass HttpHeaders {\n /** Constructs a new HTTP header object with the given values.*/\n constructor(headers) {\n /**\n * Internal map of lowercased header names to the normalized\n * form of the name (the form seen first).\n */\n this.normalizedNames = new Map();\n /**\n * Queued updates to be materialized the next initialization.\n */\n this.lazyUpdate = null;\n if (!headers) {\n this.headers = new Map();\n }\n else if (typeof headers === 'string') {\n this.lazyInit = () => {\n this.headers = new Map();\n headers.split('\\n').forEach(line => {\n const index = line.indexOf(':');\n if (index > 0) {\n const name = line.slice(0, index);\n const key = name.toLowerCase();\n const value = line.slice(index + 1).trim();\n this.maybeSetNormalizedName(name, key);\n if (this.headers.has(key)) {\n this.headers.get(key).push(value);\n }\n else {\n this.headers.set(key, [value]);\n }\n }\n });\n };\n }\n else {\n this.lazyInit = () => {\n this.headers = new Map();\n Object.keys(headers).forEach(name => {\n let values = headers[name];\n const key = name.toLowerCase();\n if (typeof values === 'string') {\n values = [values];\n }\n if (values.length > 0) {\n this.headers.set(key, values);\n this.maybeSetNormalizedName(name, key);\n }\n });\n };\n }\n }\n /**\n * Checks for existence of a given header.\n *\n * @param name The header name to check for existence.\n *\n * @returns True if the header exists, false otherwise.\n */\n has(name) {\n this.init();\n return this.headers.has(name.toLowerCase());\n }\n /**\n * Retrieves the first value of a given header.\n *\n * @param name The header name.\n *\n * @returns The value string if the header exists, null otherwise\n */\n get(name) {\n this.init();\n const values = this.headers.get(name.toLowerCase());\n return values && values.length > 0 ? values[0] : null;\n }\n /**\n * Retrieves the names of the headers.\n *\n * @returns A list of header names.\n */\n keys() {\n this.init();\n return Array.from(this.normalizedNames.values());\n }\n /**\n * Retrieves a list of values for a given header.\n *\n * @param name The header name from which to retrieve values.\n *\n * @returns A string of values if the header exists, null otherwise.\n */\n getAll(name) {\n this.init();\n return this.headers.get(name.toLowerCase()) || null;\n }\n /**\n * Appends a new value to the existing set of values for a header\n * and returns them in a clone of the original instance.\n *\n * @param name The header name for which to append the values.\n * @param value The value to append.\n *\n * @returns A clone of the HTTP headers object with the value appended to the given header.\n */\n append(name, value) {\n return this.clone({ name, value, op: 'a' });\n }\n /**\n * Sets or modifies a value for a given header in a clone of the original instance.\n * If the header already exists, its value is replaced with the given value\n * in the returned object.\n *\n * @param name The header name.\n * @param value The value or values to set or overide for the given header.\n *\n * @returns A clone of the HTTP headers object with the newly set header value.\n */\n set(name, value) {\n return this.clone({ name, value, op: 's' });\n }\n /**\n * Deletes values for a given header in a clone of the original instance.\n *\n * @param name The header name.\n * @param value The value or values to delete for the given header.\n *\n * @returns A clone of the HTTP headers object with the given value deleted.\n */\n delete(name, value) {\n return this.clone({ name, value, op: 'd' });\n }\n maybeSetNormalizedName(name, lcName) {\n if (!this.normalizedNames.has(lcName)) {\n this.normalizedNames.set(lcName, name);\n }\n }\n init() {\n if (!!this.lazyInit) {\n if (this.lazyInit instanceof HttpHeaders) {\n this.copyFrom(this.lazyInit);\n }\n else {\n this.lazyInit();\n }\n this.lazyInit = null;\n if (!!this.lazyUpdate) {\n this.lazyUpdate.forEach(update => this.applyUpdate(update));\n this.lazyUpdate = null;\n }\n }\n }\n copyFrom(other) {\n other.init();\n Array.from(other.headers.keys()).forEach(key => {\n this.headers.set(key, other.headers.get(key));\n this.normalizedNames.set(key, other.normalizedNames.get(key));\n });\n }\n clone(update) {\n const clone = new HttpHeaders();\n clone.lazyInit =\n (!!this.lazyInit && this.lazyInit instanceof HttpHeaders) ? this.lazyInit : this;\n clone.lazyUpdate = (this.lazyUpdate || []).concat([update]);\n return clone;\n }\n applyUpdate(update) {\n const key = update.name.toLowerCase();\n switch (update.op) {\n case 'a':\n case 's':\n let value = update.value;\n if (typeof value === 'string') {\n value = [value];\n }\n if (value.length === 0) {\n return;\n }\n this.maybeSetNormalizedName(update.name, key);\n const base = (update.op === 'a' ? this.headers.get(key) : undefined) || [];\n base.push(...value);\n this.headers.set(key, base);\n break;\n case 'd':\n const toDelete = update.value;\n if (!toDelete) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n let existing = this.headers.get(key);\n if (!existing) {\n return;\n }\n existing = existing.filter(value => toDelete.indexOf(value) === -1);\n if (existing.length === 0) {\n this.headers.delete(key);\n this.normalizedNames.delete(key);\n }\n else {\n this.headers.set(key, existing);\n }\n }\n break;\n }\n }\n /**\n * @internal\n */\n forEach(fn) {\n this.init();\n Array.from(this.normalizedNames.keys())\n .forEach(key => fn(this.normalizedNames.get(key), this.headers.get(key)));\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Provides encoding and decoding of URL parameter and query-string values.\n *\n * Serializes and parses URL parameter keys and values to encode and decode them.\n * If you pass URL query parameters without encoding,\n * the query parameters can be misinterpreted at the receiving end.\n *\n *\n * @publicApi\n */\nclass HttpUrlEncodingCodec {\n /**\n * Encodes a key name for a URL parameter or query-string.\n * @param key The key name.\n * @returns The encoded key name.\n */\n encodeKey(key) {\n return standardEncoding(key);\n }\n /**\n * Encodes the value of a URL parameter or query-string.\n * @param value The value.\n * @returns The encoded value.\n */\n encodeValue(value) {\n return standardEncoding(value);\n }\n /**\n * Decodes an encoded URL parameter or query-string key.\n * @param key The encoded key name.\n * @returns The decoded key name.\n */\n decodeKey(key) {\n return decodeURIComponent(key);\n }\n /**\n * Decodes an encoded URL parameter or query-string value.\n * @param value The encoded value.\n * @returns The decoded value.\n */\n decodeValue(value) {\n return decodeURIComponent(value);\n }\n}\nfunction paramParser(rawParams, codec) {\n const map = new Map();\n if (rawParams.length > 0) {\n // The `window.location.search` can be used while creating an instance of the `HttpParams` class\n // (e.g. `new HttpParams({ fromString: window.location.search })`). The `window.location.search`\n // may start with the `?` char, so we strip it if it's present.\n const params = rawParams.replace(/^\\?/, '').split('&');\n params.forEach((param) => {\n const eqIdx = param.indexOf('=');\n const [key, val] = eqIdx == -1 ?\n [codec.decodeKey(param), ''] :\n [codec.decodeKey(param.slice(0, eqIdx)), codec.decodeValue(param.slice(eqIdx + 1))];\n const list = map.get(key) || [];\n list.push(val);\n map.set(key, list);\n });\n }\n return map;\n}\n/**\n * Encode input string with standard encodeURIComponent and then un-encode specific characters.\n */\nconst STANDARD_ENCODING_REGEX = /%(\\d[a-f0-9])/gi;\nconst STANDARD_ENCODING_REPLACEMENTS = {\n '40': '@',\n '3A': ':',\n '24': '$',\n '2C': ',',\n '3B': ';',\n '2B': '+',\n '3D': '=',\n '3F': '?',\n '2F': '/',\n};\nfunction standardEncoding(v) {\n return encodeURIComponent(v).replace(STANDARD_ENCODING_REGEX, (s, t) => STANDARD_ENCODING_REPLACEMENTS[t] ?? s);\n}\nfunction valueToString(value) {\n return `${value}`;\n}\n/**\n * An HTTP request/response body that represents serialized parameters,\n * per the MIME type `application/x-www-form-urlencoded`.\n *\n * This class is immutable; all mutation operations return a new instance.\n *\n * @publicApi\n */\nclass HttpParams {\n constructor(options = {}) {\n this.updates = null;\n this.cloneFrom = null;\n this.encoder = options.encoder || new HttpUrlEncodingCodec();\n if (!!options.fromString) {\n if (!!options.fromObject) {\n throw new Error(`Cannot specify both fromString and fromObject.`);\n }\n this.map = paramParser(options.fromString, this.encoder);\n }\n else if (!!options.fromObject) {\n this.map = new Map();\n Object.keys(options.fromObject).forEach(key => {\n const value = options.fromObject[key];\n this.map.set(key, Array.isArray(value) ? value : [value]);\n });\n }\n else {\n this.map = null;\n }\n }\n /**\n * Reports whether the body includes one or more values for a given parameter.\n * @param param The parameter name.\n * @returns True if the parameter has one or more values,\n * false if it has no value or is not present.\n */\n has(param) {\n this.init();\n return this.map.has(param);\n }\n /**\n * Retrieves the first value for a parameter.\n * @param param The parameter name.\n * @returns The first value of the given parameter,\n * or `null` if the parameter is not present.\n */\n get(param) {\n this.init();\n const res = this.map.get(param);\n return !!res ? res[0] : null;\n }\n /**\n * Retrieves all values for a parameter.\n * @param param The parameter name.\n * @returns All values in a string array,\n * or `null` if the parameter not present.\n */\n getAll(param) {\n this.init();\n return this.map.get(param) || null;\n }\n /**\n * Retrieves all the parameters for this body.\n * @returns The parameter names in a string array.\n */\n keys() {\n this.init();\n return Array.from(this.map.keys());\n }\n /**\n * Appends a new value to existing values for a parameter.\n * @param param The parameter name.\n * @param value The new value to add.\n * @return A new body with the appended value.\n */\n append(param, value) {\n return this.clone({ param, value, op: 'a' });\n }\n /**\n * Constructs a new body with appended values for the given parameter name.\n * @param params parameters and values\n * @return A new body with the new value.\n */\n appendAll(params) {\n const updates = [];\n Object.keys(params).forEach(param => {\n const value = params[param];\n if (Array.isArray(value)) {\n value.forEach(_value => {\n updates.push({ param, value: _value, op: 'a' });\n });\n }\n else {\n updates.push({ param, value: value, op: 'a' });\n }\n });\n return this.clone(updates);\n }\n /**\n * Replaces the value for a parameter.\n * @param param The parameter name.\n * @param value The new value.\n * @return A new body with the new value.\n */\n set(param, value) {\n return this.clone({ param, value, op: 's' });\n }\n /**\n * Removes a given value or all values from a parameter.\n * @param param The parameter name.\n * @param value The value to remove, if provided.\n * @return A new body with the given value removed, or with all values\n * removed if no value is specified.\n */\n delete(param, value) {\n return this.clone({ param, value, op: 'd' });\n }\n /**\n * Serializes the body to an encoded string, where key-value pairs (separated by `=`) are\n * separated by `&`s.\n */\n toString() {\n this.init();\n return this.keys()\n .map(key => {\n const eKey = this.encoder.encodeKey(key);\n // `a: ['1']` produces `'a=1'`\n // `b: []` produces `''`\n // `c: ['1', '2']` produces `'c=1&c=2'`\n return this.map.get(key).map(value => eKey + '=' + this.encoder.encodeValue(value))\n .join('&');\n })\n // filter out empty values because `b: []` produces `''`\n // which results in `a=1&&c=1&c=2` instead of `a=1&c=1&c=2` if we don't\n .filter(param => param !== '')\n .join('&');\n }\n clone(update) {\n const clone = new HttpParams({ encoder: this.encoder });\n clone.cloneFrom = this.cloneFrom || this;\n clone.updates = (this.updates || []).concat(update);\n return clone;\n }\n init() {\n if (this.map === null) {\n this.map = new Map();\n }\n if (this.cloneFrom !== null) {\n this.cloneFrom.init();\n this.cloneFrom.keys().forEach(key => this.map.set(key, this.cloneFrom.map.get(key)));\n this.updates.forEach(update => {\n switch (update.op) {\n case 'a':\n case 's':\n const base = (update.op === 'a' ? this.map.get(update.param) : undefined) || [];\n base.push(valueToString(update.value));\n this.map.set(update.param, base);\n break;\n case 'd':\n if (update.value !== undefined) {\n let base = this.map.get(update.param) || [];\n const idx = base.indexOf(valueToString(update.value));\n if (idx !== -1) {\n base.splice(idx, 1);\n }\n if (base.length > 0) {\n this.map.set(update.param, base);\n }\n else {\n this.map.delete(update.param);\n }\n }\n else {\n this.map.delete(update.param);\n break;\n }\n }\n });\n this.cloneFrom = this.updates = null;\n }\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * A token used to manipulate and access values stored in `HttpContext`.\n *\n * @publicApi\n */\nclass HttpContextToken {\n constructor(defaultValue) {\n this.defaultValue = defaultValue;\n }\n}\n/**\n * Http context stores arbitrary user defined values and ensures type safety without\n * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash.\n *\n * This context is mutable and is shared between cloned requests unless explicitly specified.\n *\n * @usageNotes\n *\n * ### Usage Example\n *\n * ```typescript\n * // inside cache.interceptors.ts\n * export const IS_CACHE_ENABLED = new HttpContextToken(() => false);\n *\n * export class CacheInterceptor implements HttpInterceptor {\n *\n * intercept(req: HttpRequest, delegate: HttpHandler): Observable> {\n * if (req.context.get(IS_CACHE_ENABLED) === true) {\n * return ...;\n * }\n * return delegate.handle(req);\n * }\n * }\n *\n * // inside a service\n *\n * this.httpClient.get('/api/weather', {\n * context: new HttpContext().set(IS_CACHE_ENABLED, true)\n * }).subscribe(...);\n * ```\n *\n * @publicApi\n */\nclass HttpContext {\n constructor() {\n this.map = new Map();\n }\n /**\n * Store a value in the context. If a value is already present it will be overwritten.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n * @param value The value to store.\n *\n * @returns A reference to itself for easy chaining.\n */\n set(token, value) {\n this.map.set(token, value);\n return this;\n }\n /**\n * Retrieve the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns The stored value or default if one is defined.\n */\n get(token) {\n if (!this.map.has(token)) {\n this.map.set(token, token.defaultValue());\n }\n return this.map.get(token);\n }\n /**\n * Delete the value associated with the given token.\n *\n * @param token The reference to an instance of `HttpContextToken`.\n *\n * @returns A reference to itself for easy chaining.\n */\n delete(token) {\n this.map.delete(token);\n return this;\n }\n /**\n * @returns a list of tokens currently stored in the context.\n */\n keys() {\n return this.map.keys();\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Determine whether the given HTTP method may include a body.\n */\nfunction mightHaveBody(method) {\n switch (method) {\n case 'DELETE':\n case 'GET':\n case 'HEAD':\n case 'OPTIONS':\n case 'JSONP':\n return false;\n default:\n return true;\n }\n}\n/**\n * Safely assert whether the given value is an ArrayBuffer.\n *\n * In some execution environments ArrayBuffer is not defined.\n */\nfunction isArrayBuffer(value) {\n return typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer;\n}\n/**\n * Safely assert whether the given value is a Blob.\n *\n * In some execution environments Blob is not defined.\n */\nfunction isBlob(value) {\n return typeof Blob !== 'undefined' && value instanceof Blob;\n}\n/**\n * Safely assert whether the given value is a FormData instance.\n *\n * In some execution environments FormData is not defined.\n */\nfunction isFormData(value) {\n return typeof FormData !== 'undefined' && value instanceof FormData;\n}\n/**\n * Safely assert whether the given value is a URLSearchParams instance.\n *\n * In some execution environments URLSearchParams is not defined.\n */\nfunction isUrlSearchParams(value) {\n return typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams;\n}\n/**\n * An outgoing HTTP request with an optional typed body.\n *\n * `HttpRequest` represents an outgoing request, including URL, method,\n * headers, body, and other request configuration options. Instances should be\n * assumed to be immutable. To modify a `HttpRequest`, the `clone`\n * method should be used.\n *\n * @publicApi\n */\nclass HttpRequest {\n constructor(method, url, third, fourth) {\n this.url = url;\n /**\n * The request body, or `null` if one isn't set.\n *\n * Bodies are not enforced to be immutable, as they can include a reference to any\n * user-defined data type. However, interceptors should take care to preserve\n * idempotence by treating them as such.\n */\n this.body = null;\n /**\n * Whether this request should be made in a way that exposes progress events.\n *\n * Progress events are expensive (change detection runs on each event) and so\n * they should only be requested if the consumer intends to monitor them.\n */\n this.reportProgress = false;\n /**\n * Whether this request should be sent with outgoing credentials (cookies).\n */\n this.withCredentials = false;\n /**\n * The expected response type of the server.\n *\n * This is used to parse the response appropriately before returning it to\n * the requestee.\n */\n this.responseType = 'json';\n this.method = method.toUpperCase();\n // Next, need to figure out which argument holds the HttpRequestInit\n // options, if any.\n let options;\n // Check whether a body argument is expected. The only valid way to omit\n // the body argument is to use a known no-body method like GET.\n if (mightHaveBody(this.method) || !!fourth) {\n // Body is the third argument, options are the fourth.\n this.body = (third !== undefined) ? third : null;\n options = fourth;\n }\n else {\n // No body required, options are the third argument. The body stays null.\n options = third;\n }\n // If options have been passed, interpret them.\n if (options) {\n // Normalize reportProgress and withCredentials.\n this.reportProgress = !!options.reportProgress;\n this.withCredentials = !!options.withCredentials;\n // Override default response type of 'json' if one is provided.\n if (!!options.responseType) {\n this.responseType = options.responseType;\n }\n // Override headers if they're provided.\n if (!!options.headers) {\n this.headers = options.headers;\n }\n if (!!options.context) {\n this.context = options.context;\n }\n if (!!options.params) {\n this.params = options.params;\n }\n }\n // If no headers have been passed in, construct a new HttpHeaders instance.\n if (!this.headers) {\n this.headers = new HttpHeaders();\n }\n // If no context have been passed in, construct a new HttpContext instance.\n if (!this.context) {\n this.context = new HttpContext();\n }\n // If no parameters have been passed in, construct a new HttpUrlEncodedParams instance.\n if (!this.params) {\n this.params = new HttpParams();\n this.urlWithParams = url;\n }\n else {\n // Encode the parameters to a string in preparation for inclusion in the URL.\n const params = this.params.toString();\n if (params.length === 0) {\n // No parameters, the visible URL is just the URL given at creation time.\n this.urlWithParams = url;\n }\n else {\n // Does the URL already have query parameters? Look for '?'.\n const qIdx = url.indexOf('?');\n // There are 3 cases to handle:\n // 1) No existing parameters -> append '?' followed by params.\n // 2) '?' exists and is followed by existing query string ->\n // append '&' followed by params.\n // 3) '?' exists at the end of the url -> append params directly.\n // This basically amounts to determining the character, if any, with\n // which to join the URL and parameters.\n const sep = qIdx === -1 ? '?' : (qIdx < url.length - 1 ? '&' : '');\n this.urlWithParams = url + sep + params;\n }\n }\n }\n /**\n * Transform the free-form body into a serialized format suitable for\n * transmission to the server.\n */\n serializeBody() {\n // If no body is present, no need to serialize it.\n if (this.body === null) {\n return null;\n }\n // Check whether the body is already in a serialized form. If so,\n // it can just be returned directly.\n if (isArrayBuffer(this.body) || isBlob(this.body) || isFormData(this.body) ||\n isUrlSearchParams(this.body) || typeof this.body === 'string') {\n return this.body;\n }\n // Check whether the body is an instance of HttpUrlEncodedParams.\n if (this.body instanceof HttpParams) {\n return this.body.toString();\n }\n // Check whether the body is an object or array, and serialize with JSON if so.\n if (typeof this.body === 'object' || typeof this.body === 'boolean' ||\n Array.isArray(this.body)) {\n return JSON.stringify(this.body);\n }\n // Fall back on toString() for everything else.\n return this.body.toString();\n }\n /**\n * Examine the body and attempt to infer an appropriate MIME type\n * for it.\n *\n * If no such type can be inferred, this method will return `null`.\n */\n detectContentTypeHeader() {\n // An empty body has no content type.\n if (this.body === null) {\n return null;\n }\n // FormData bodies rely on the browser's content type assignment.\n if (isFormData(this.body)) {\n return null;\n }\n // Blobs usually have their own content type. If it doesn't, then\n // no type can be inferred.\n if (isBlob(this.body)) {\n return this.body.type || null;\n }\n // Array buffers have unknown contents and thus no type can be inferred.\n if (isArrayBuffer(this.body)) {\n return null;\n }\n // Technically, strings could be a form of JSON data, but it's safe enough\n // to assume they're plain strings.\n if (typeof this.body === 'string') {\n return 'text/plain';\n }\n // `HttpUrlEncodedParams` has its own content-type.\n if (this.body instanceof HttpParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n // Arrays, objects, boolean and numbers will be encoded as JSON.\n if (typeof this.body === 'object' || typeof this.body === 'number' ||\n typeof this.body === 'boolean') {\n return 'application/json';\n }\n // No type could be inferred.\n return null;\n }\n clone(update = {}) {\n // For method, url, and responseType, take the current value unless\n // it is overridden in the update hash.\n const method = update.method || this.method;\n const url = update.url || this.url;\n const responseType = update.responseType || this.responseType;\n // The body is somewhat special - a `null` value in update.body means\n // whatever current body is present is being overridden with an empty\n // body, whereas an `undefined` value in update.body implies no\n // override.\n const body = (update.body !== undefined) ? update.body : this.body;\n // Carefully handle the boolean options to differentiate between\n // `false` and `undefined` in the update args.\n const withCredentials = (update.withCredentials !== undefined) ? update.withCredentials : this.withCredentials;\n const reportProgress = (update.reportProgress !== undefined) ? update.reportProgress : this.reportProgress;\n // Headers and params may be appended to if `setHeaders` or\n // `setParams` are used.\n let headers = update.headers || this.headers;\n let params = update.params || this.params;\n // Pass on context if needed\n const context = update.context ?? this.context;\n // Check whether the caller has asked to add headers.\n if (update.setHeaders !== undefined) {\n // Set every requested header.\n headers =\n Object.keys(update.setHeaders)\n .reduce((headers, name) => headers.set(name, update.setHeaders[name]), headers);\n }\n // Check whether the caller has asked to set params.\n if (update.setParams) {\n // Set every requested param.\n params = Object.keys(update.setParams)\n .reduce((params, param) => params.set(param, update.setParams[param]), params);\n }\n // Finally, construct the new HttpRequest using the pieces from above.\n return new HttpRequest(method, url, body, {\n params,\n headers,\n context,\n reportProgress,\n responseType,\n withCredentials,\n });\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Type enumeration for the different kinds of `HttpEvent`.\n *\n * @publicApi\n */\nvar HttpEventType;\n(function (HttpEventType) {\n /**\n * The request was sent out over the wire.\n */\n HttpEventType[HttpEventType[\"Sent\"] = 0] = \"Sent\";\n /**\n * An upload progress event was received.\n */\n HttpEventType[HttpEventType[\"UploadProgress\"] = 1] = \"UploadProgress\";\n /**\n * The response status code and headers were received.\n */\n HttpEventType[HttpEventType[\"ResponseHeader\"] = 2] = \"ResponseHeader\";\n /**\n * A download progress event was received.\n */\n HttpEventType[HttpEventType[\"DownloadProgress\"] = 3] = \"DownloadProgress\";\n /**\n * The full response including the body was received.\n */\n HttpEventType[HttpEventType[\"Response\"] = 4] = \"Response\";\n /**\n * A custom event from an interceptor or a backend.\n */\n HttpEventType[HttpEventType[\"User\"] = 5] = \"User\";\n})(HttpEventType || (HttpEventType = {}));\n/**\n * Base class for both `HttpResponse` and `HttpHeaderResponse`.\n *\n * @publicApi\n */\nclass HttpResponseBase {\n /**\n * Super-constructor for all responses.\n *\n * The single parameter accepted is an initialization hash. Any properties\n * of the response passed there will override the default values.\n */\n constructor(init, defaultStatus = 200 /* Ok */, defaultStatusText = 'OK') {\n // If the hash has values passed, use them to initialize the response.\n // Otherwise use the default values.\n this.headers = init.headers || new HttpHeaders();\n this.status = init.status !== undefined ? init.status : defaultStatus;\n this.statusText = init.statusText || defaultStatusText;\n this.url = init.url || null;\n // Cache the ok value to avoid defining a getter.\n this.ok = this.status >= 200 && this.status < 300;\n }\n}\n/**\n * A partial HTTP response which only includes the status and header data,\n * but no response body.\n *\n * `HttpHeaderResponse` is a `HttpEvent` available on the response\n * event stream, only when progress events are requested.\n *\n * @publicApi\n */\nclass HttpHeaderResponse extends HttpResponseBase {\n /**\n * Create a new `HttpHeaderResponse` with the given parameters.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.ResponseHeader;\n }\n /**\n * Copy this `HttpHeaderResponse`, overriding its contents with the\n * given parameter hash.\n */\n clone(update = {}) {\n // Perform a straightforward initialization of the new HttpHeaderResponse,\n // overriding the current parameters with new ones if given.\n return new HttpHeaderResponse({\n headers: update.headers || this.headers,\n status: update.status !== undefined ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A full HTTP response, including a typed response body (which may be `null`\n * if one was not returned).\n *\n * `HttpResponse` is a `HttpEvent` available on the response event\n * stream.\n *\n * @publicApi\n */\nclass HttpResponse extends HttpResponseBase {\n /**\n * Construct a new `HttpResponse`.\n */\n constructor(init = {}) {\n super(init);\n this.type = HttpEventType.Response;\n this.body = init.body !== undefined ? init.body : null;\n }\n clone(update = {}) {\n return new HttpResponse({\n body: (update.body !== undefined) ? update.body : this.body,\n headers: update.headers || this.headers,\n status: (update.status !== undefined) ? update.status : this.status,\n statusText: update.statusText || this.statusText,\n url: update.url || this.url || undefined,\n });\n }\n}\n/**\n * A response that represents an error or failure, either from a\n * non-successful HTTP status, an error while executing the request,\n * or some other failure which occurred during the parsing of the response.\n *\n * Any error returned on the `Observable` response stream will be\n * wrapped in an `HttpErrorResponse` to provide additional context about\n * the state of the HTTP layer when the error occurred. The error property\n * will contain either a wrapped Error object or the error response returned\n * from the server.\n *\n * @publicApi\n */\nclass HttpErrorResponse extends HttpResponseBase {\n constructor(init) {\n // Initialize with a default status of 0 / Unknown Error.\n super(init, 0, 'Unknown Error');\n this.name = 'HttpErrorResponse';\n /**\n * Errors are never okay, even when the status code is in the 2xx success range.\n */\n this.ok = false;\n // If the response was successful, then this was a parse error. Otherwise, it was\n // a protocol-level failure of some sort. Either the request failed in transit\n // or the server returned an unsuccessful status code.\n if (this.status >= 200 && this.status < 300) {\n this.message = `Http failure during parsing for ${init.url || '(unknown url)'}`;\n }\n else {\n this.message = `Http failure response for ${init.url || '(unknown url)'}: ${init.status} ${init.statusText}`;\n }\n this.error = init.error || null;\n }\n}\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Constructs an instance of `HttpRequestOptions` from a source `HttpMethodOptions` and\n * the given `body`. This function clones the object and adds the body.\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n *\n */\nfunction addBody(options, body) {\n return {\n body,\n headers: options.headers,\n context: options.context,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n/**\n * Performs HTTP requests.\n * This service is available as an injectable class, with methods to perform HTTP requests.\n * Each request method has multiple signatures, and the return type varies based on\n * the signature that is called (mainly the values of `observe` and `responseType`).\n *\n * Note that the `responseType` *options* value is a String that identifies the\n * single data type of the response.\n * A single overload version of the method handles each response type.\n * The value of `responseType` cannot be a union, as the combined signature could imply.\n\n *\n * @usageNotes\n * Sample HTTP requests for the [Tour of Heroes](/tutorial/toh-pt0) application.\n *\n * ### HTTP Request Example\n *\n * ```\n * // GET heroes whose name contains search term\n * searchHeroes(term: string): observable{\n *\n * const params = new HttpParams({fromString: 'name=term'});\n * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});\n * }\n * ```\n *\n * Alternatively, the parameter string can be used without invoking HttpParams\n * by directly joining to the URL.\n * ```\n * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});\n * ```\n *\n *\n * ### JSONP Example\n * ```\n * requestJsonp(url, callback = 'callback') {\n * return this.httpClient.jsonp(this.heroesURL, callback);\n * }\n * ```\n *\n * ### PATCH Example\n * ```\n * // PATCH one of the heroes' name\n * patchHero (id: number, heroName: string): Observable<{}> {\n * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42\n * return this.httpClient.patch(url, {name: heroName}, httpOptions)\n * .pipe(catchError(this.handleError('patchHero')));\n * }\n * ```\n *\n * @see [HTTP Guide](guide/http)\n * @see [HTTP Request](api/common/http/HttpRequest)\n *\n * @publicApi\n */\nclass HttpClient {\n constructor(handler) {\n this.handler = handler;\n }\n /**\n * Constructs an observable for a generic HTTP request that, when subscribed,\n * fires the request through the chain of registered interceptors and on to the\n * server.\n *\n * You can pass an `HttpRequest` directly as the only parameter. In this case,\n * the call returns an observable of the raw `HttpEvent` stream.\n *\n * Alternatively you can pass an HTTP method as the first parameter,\n * a URL string as the second, and an options hash containing the request body as the third.\n * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the\n * type of returned observable.\n * * The `responseType` value determines how a successful response body is parsed.\n * * If `responseType` is the default `json`, you can pass a type interface for the resulting\n * object as a type parameter to the call.\n *\n * The `observe` value determines the return type, according to what you are interested in\n * observing.\n * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including\n * progress events by default.\n * * An `observe` value of response returns an observable of `HttpResponse`,\n * where the `T` parameter depends on the `responseType` and any optionally provided type\n * parameter.\n * * An `observe` value of body returns an observable of `` with the same `T` body type.\n *\n */\n request(first, url, options = {}) {\n let req;\n // First, check whether the primary argument is an instance of `HttpRequest`.\n if (first instanceof HttpRequest) {\n // It is. The other arguments must be undefined (per the signatures) and can be\n // ignored.\n req = first;\n }\n else {\n // It's a string, so it represents a URL. Construct a request based on it,\n // and incorporate the remaining arguments (assuming `GET` unless a method is\n // provided.\n // Figure out the headers.\n let headers = undefined;\n if (options.headers instanceof HttpHeaders) {\n headers = options.headers;\n }\n else {\n headers = new HttpHeaders(options.headers);\n }\n // Sort out parameters.\n let params = undefined;\n if (!!options.params) {\n if (options.params instanceof HttpParams) {\n params = options.params;\n }\n else {\n params = new HttpParams({ fromObject: options.params });\n }\n }\n // Construct the request.\n req = new HttpRequest(first, url, (options.body !== undefined ? options.body : null), {\n headers,\n context: options.context,\n params,\n reportProgress: options.reportProgress,\n // By default, JSON is assumed to be returned for all calls.\n responseType: options.responseType || 'json',\n withCredentials: options.withCredentials,\n });\n }\n // Start with an Observable.of() the initial request, and run the handler (which\n // includes all interceptors) inside a concatMap(). This way, the handler runs\n // inside an Observable chain, which causes interceptors to be re-run on every\n // subscription (this also makes retries re-run the handler, including interceptors).\n const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));\n // If coming via the API signature which accepts a previously constructed HttpRequest,\n // the only option is to get the event stream. Otherwise, return the event stream if\n // that is what was requested.\n if (first instanceof HttpRequest || options.observe === 'events') {\n return events$;\n }\n // The requested stream contains either the full response or the body. In either\n // case, the first step is to filter the event stream to extract a stream of\n // responses(s).\n const res$ = events$.pipe(filter((event) => event instanceof HttpResponse));\n // Decide which stream to return.\n switch (options.observe || 'body') {\n case 'body':\n // The requested stream is the body. Map the response stream to the response\n // body. This could be done more simply, but a misbehaving interceptor might\n // transform the response body into a different format and ignore the requested\n // responseType. Guard against this by validating that the response is of the\n // requested type.\n switch (req.responseType) {\n case 'arraybuffer':\n return res$.pipe(map((res) => {\n // Validate that the body is an ArrayBuffer.\n if (res.body !== null && !(res.body instanceof ArrayBuffer)) {\n throw new Error('Response is not an ArrayBuffer.');\n }\n return res.body;\n }));\n case 'blob':\n return res$.pipe(map((res) => {\n // Validate that the body is a Blob.\n if (res.body !== null && !(res.body instanceof Blob)) {\n throw new Error('Response is not a Blob.');\n }\n return res.body;\n }));\n case 'text':\n return res$.pipe(map((res) => {\n // Validate that the body is a string.\n if (res.body !== null && typeof res.body !== 'string') {\n throw new Error('Response is not a string.');\n }\n return res.body;\n }));\n case 'json':\n default:\n // No validation needed for JSON responses, as they can be of any type.\n return res$.pipe(map((res) => res.body));\n }\n case 'response':\n // The response stream was requested directly, so return it.\n return res$;\n default:\n // Guard against new future observe types being added.\n throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);\n }\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `DELETE` request to execute on the server. See the individual overloads for\n * details on the return type.\n *\n * @param url The endpoint URL.\n * @param options The HTTP options to send with the request.\n *\n */\n delete(url, options = {}) {\n return this.request('DELETE', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `GET` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n get(url, options = {}) {\n return this.request('GET', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `HEAD` request to execute on the server. The `HEAD` method returns\n * meta information about the resource without transferring the\n * resource itself. See the individual overloads for\n * details on the return type.\n */\n head(url, options = {}) {\n return this.request('HEAD', url, options);\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes a request with the special method\n * `JSONP` to be dispatched via the interceptor pipeline.\n * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain\n * API endpoints that don't support newer,\n * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.\n * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the\n * requests even if the API endpoint is not located on the same domain (origin) as the client-side\n * application making the request.\n * The endpoint API must support JSONP callback for JSONP requests to work.\n * The resource API returns the JSON response wrapped in a callback function.\n * You can pass the callback function name as one of the query parameters.\n * Note that JSONP requests can only be used with `GET` requests.\n *\n * @param url The resource URL.\n * @param callbackParam The callback function name.\n *\n */\n jsonp(url, callbackParam) {\n return this.request('JSONP', url, {\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n /**\n * Constructs an `Observable` that, when subscribed, causes the configured\n * `OPTIONS` request to execute on the server. This method allows the client\n * to determine the supported HTTP methods and other capabilities of an endpoint,\n * without implying a resource action. See the individual overloads for\n * details on the return type.\n */\n options(url, options = {}) {\n return this.request('OPTIONS', url, options);\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PATCH` request to execute on the server. See the individual overloads for\n * details on the return type.\n */\n patch(url, body, options = {}) {\n return this.request('PATCH', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `POST` request to execute on the server. The server responds with the location of\n * the replaced resource. See the individual overloads for\n * details on the return type.\n */\n post(url, body, options = {}) {\n return this.request('POST', url, addBody(options, body));\n }\n /**\n * Constructs an observable that, when subscribed, causes the configured\n * `PUT` request to execute on the server. The `PUT` method replaces an existing resource\n * with a new set of values.\n * See the individual overloads for details on the return type.\n */\n put(url, body, options = {}) {\n return this.request('PUT', url, addBody(options, body));\n }\n}\nHttpClient.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HttpClient, deps: [{ token: HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable });\nHttpClient.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HttpClient });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: HttpClient, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: HttpHandler }]; } });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * `HttpHandler` which applies an `HttpInterceptor` to an `HttpRequest`.\n *\n *\n */\nclass HttpInterceptorHandler {\n constructor(next, interceptor) {\n this.next = next;\n this.interceptor = interceptor;\n }\n handle(req) {\n return this.interceptor.intercept(req, this.next);\n }\n}\n/**\n * A multi-provider token that represents the array of registered\n * `HttpInterceptor` objects.\n *\n * @publicApi\n */\nconst HTTP_INTERCEPTORS = new InjectionToken('HTTP_INTERCEPTORS');\nclass NoopInterceptor {\n intercept(req, next) {\n return next.handle(req);\n }\n}\nNoopInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NoopInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\nNoopInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NoopInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.2\", ngImport: i0, type: NoopInterceptor, decorators: [{\n type: Injectable\n }] });\n\n/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n// Every request made through JSONP needs a callback name that's unique across the\n// whole page. Each request is assigned an id and the callback name is constructed\n// from that. The next id to be assigned is tracked in a global variable here that\n// is shared among all applications on the page.\nlet nextRequestId = 0;\n// Error text given when a JSONP script is injected, but doesn't invoke the callback\n// passed in its URL.\nconst JSONP_ERR_NO_CALLBACK = 'JSONP injected script did not invoke callback.';\n// Error text given when a request is passed to the JsonpClientBackend that doesn't\n// have a request method JSONP.\nconst JSONP_ERR_WRONG_METHOD = 'JSONP requests must use JSONP request method.';\nconst JSONP_ERR_WRONG_RESPONSE_TYPE = 'JSONP requests must use Json response type.';\n/**\n * DI token/abstract type representing a map of JSONP callbacks.\n *\n * In the browser, this should always be the `window` object.\n *\n *\n */\nclass JsonpCallbackContext {\n}\n/**\n * Processes an `HttpRequest` with the JSONP method,\n * by performing JSONP style requests.\n * @see `HttpHandler`\n * @see `HttpXhrBackend`\n *\n * @publicApi\n */\nclass JsonpClientBackend {\n constructor(callbackMap, document) {\n this.callbackMap = callbackMap;\n this.document = document;\n /**\n * A resolved promise that can be used to schedule microtasks in the event handlers.\n */\n this.resolvedPromise = Promise.resolve();\n }\n /**\n * Get the name of the next callback method, by incrementing the global `nextRequestId`.\n */\n nextCallback() {\n return `ng_jsonp_callback_${nextRequestId++}`;\n }\n /**\n * Processes a JSONP request and returns an event stream of the results.\n * @param req The request object.\n * @returns An observable of the response events.\n *\n */\n handle(req) {\n // Firstly, check both the method and response type. If either doesn't match\n // then the request was improperly routed here and cannot be handled.\n if (req.method !== 'JSONP') {\n throw new Error(JSONP_ERR_WRONG_METHOD);\n }\n else if (req.responseType !== 'json') {\n throw new Error(JSONP_ERR_WRONG_RESPONSE_TYPE);\n }\n // Everything else happens inside the Observable boundary.\n return new Observable((observer) => {\n // The first step to make a request is to generate the callback name, and replace the\n // callback placeholder in the URL with the name. Care has to be taken here to ensure\n // a trailing &, if matched, gets inserted back into the URL in the correct place.\n const callback = this.nextCallback();\n const url = req.urlWithParams.replace(/=JSONP_CALLBACK(&|$)/, `=${callback}$1`);\n // Construct the